UNPKG

tencentcloud-sdk-nodejs-intl-en

Version:
65,683 lines • 1.74 MB
/*
 * Copyright (c) 2018 THL A29 Limited, a Tencent company. All Rights Reserved.
 *
 * 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.
 */
const AbstractModel = require("../../common/abstract_model");

/**
 * ExportBashEvents request structure.
 * @class
 */
class ExportBashEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeSearchTemplates response structure.
 * @class
 */
class DescribeSearchTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Template list
         * @type {Array.<SearchTemplate> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new SearchTemplate();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyJavaMemShellPluginSwitch response structure.
 * @class
 */
class ModifyJavaMemShellPluginSwitchResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportReverseShellEvents response structure.
 * @class
 */
class ExportReverseShellEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineTop response structure.
 * @class
 */
class DescribeBaselineTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of top check items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineRuleTopInfo> || null}
         */
        this.RuleTopList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RuleTopList) {
            this.RuleTopList = new Array();
            for (let z in params.RuleTopList) {
                let obj = new BaselineRuleTopInfo();
                obj.deserialize(params.RuleTopList[z]);
                this.RuleTopList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on alarms associated with the node
 * @class
 */
class AlarmInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Table names of IDs of alarms associated with the node. Separate multiple pairs with commas. Example: t1:id1,t2:id2
         * @type {string || null}
         */
        this.AlarmId = null;

        /**
         * Alarm status. This parameter takes effect when this node is an alarm node.
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmId = 'AlarmId' in params ? params.AlarmId : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DescribeLogHistogram request structure.
 * @class
 */
class DescribeLogHistogramRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time of logs to be queried, which is a Unix timestamp in milliseconds
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End time of logs to be queried, which is a Unix timestamp in milliseconds
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Query statement
         * @type {string || null}
         */
        this.QueryString = null;

        /**
         * Time interval, in ms
         * @type {number || null}
         */
        this.Interval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.QueryString = 'QueryString' in params ? params.QueryString : null;
        this.Interval = 'Interval' in params ? params.Interval : null;

    }
}

/**
 * ModifyWarningSetting response structure.
 * @class
 */
class ModifyWarningSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebServiceInfoList response structure.
 * @class
 */
class DescribeAssetWebServiceInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebServiceBaseInfo> || null}
         */
        this.WebServices = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebServices) {
            this.WebServices = new Array();
            for (let z in params.WebServices) {
                let obj = new AssetWebServiceBaseInfo();
                obj.deserialize(params.WebServices[z]);
                this.WebServices.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyVulDefenceEventStatus request structure.
 * @class
 */
class ModifyVulDefenceEventStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * 0: pending; 2: processed; 3: ignored; 4: deleted.
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DescribeAssetAppProcessList response structure.
 * @class
 */
class DescribeAssetAppProcessListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Process list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetAppProcessInfo> || null}
         */
        this.Process = null;

        /**
         * Total number of partitions
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetAppProcessInfo();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWebHookPolicy request structure.
 * @class
 */
class ModifyWebHookPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * id
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Event type
         * @type {Array.<WebHookEventKv> || null}
         */
        this.Events = null;

        /**
         * Host range
         * @type {Array.<WebHookHostLabel> || null}
         */
        this.HostLabels = null;

        /**
         * Recipient
         * @type {Array.<WebHookReceiver> || null}
         */
        this.Receivers = null;

        /**
         * Format. 0: text; 1: JSON.
         * @type {number || null}
         */
        this.Format = null;

        /**
         * Custom passthrough field
         * @type {Array.<WebHookCustomField> || null}
         */
        this.CustomFields = null;

        /**
         * Enable/Disable [1-Disable, 0-Enable]
         * @type {number || null}
         */
        this.IsDisabled = null;

        /**
         * Host list
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.ExcludedQuuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;

        if (params.Events) {
            this.Events = new Array();
            for (let z in params.Events) {
                let obj = new WebHookEventKv();
                obj.deserialize(params.Events[z]);
                this.Events.push(obj);
            }
        }

        if (params.HostLabels) {
            this.HostLabels = new Array();
            for (let z in params.HostLabels) {
                let obj = new WebHookHostLabel();
                obj.deserialize(params.HostLabels[z]);
                this.HostLabels.push(obj);
            }
        }

        if (params.Receivers) {
            this.Receivers = new Array();
            for (let z in params.Receivers) {
                let obj = new WebHookReceiver();
                obj.deserialize(params.Receivers[z]);
                this.Receivers.push(obj);
            }
        }
        this.Format = 'Format' in params ? params.Format : null;

        if (params.CustomFields) {
            this.CustomFields = new Array();
            for (let z in params.CustomFields) {
                let obj = new WebHookCustomField();
                obj.deserialize(params.CustomFields[z]);
                this.CustomFields.push(obj);
            }
        }
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.ExcludedQuuids = 'ExcludedQuuids' in params ? params.ExcludedQuuids : null;

    }
}

/**
 * DescribeBashPolicies request structure.
 * @class
 */
class DescribeBashPoliciesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returned entries. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria
<li>Name - String - required: no - rule name</li>
<li>Rule - String - required: no - rule content</li>
<li>Level - Int - required: no - threat level</li>
<li>White - Int - required: no - allowlist type</li>
<li>Category - Int - required: no - policy type</li>
<li>BashAction - Int - required: no - action</li>
<li>Enable - Int - required: no - enabling status</li>
<li>Id - Int - required: no - policy ID</li>
<li>PolicyId - Int - required: no - policy ID</li>
<li>RuleId - Int - required: no - rule ID</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeLoginWhiteHostList request structure.
 * @class
 */
class DescribeLoginWhiteHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Number of results to be returned. Maximum value: 1000.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria <li>IpOrAlias - String - required: no - host IP or alias for filtering</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportRansomDefenseBackupList response structure.
 * @class
 */
class ExportRansomDefenseBackupListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CKafka topic name
 * @class
 */
class CKafkaTopicInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Topic ID
         * @type {string || null}
         */
        this.TopicID = null;

        /**
         * Topic name
         * @type {string || null}
         */
        this.TopicName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TopicID = 'TopicID' in params ? params.TopicID : null;
        this.TopicName = 'TopicName' in params ? params.TopicName : null;

    }
}

/**
 * DeleteWebHookPolicy response structure.
 * @class
 */
class DeleteWebHookPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetAppCount response structure.
 * @class
 */
class DescribeAssetAppCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of software applications
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Apps = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Apps) {
            this.Apps = new Array();
            for (let z in params.Apps) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Apps[z]);
                this.Apps.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackTop response structure.
 * @class
 */
class DescribeAttackTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top Statistics
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {NetAttackTopInfo || null}
         */
        this.NetAttackTopInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.NetAttackTopInfo) {
            let obj = new NetAttackTopInfo();
            obj.deserialize(params.NetAttackTopInfo)
            this.NetAttackTopInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLicenseOrder request structure.
 * @class
 */
class ModifyLicenseOrderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Expected value. If the current value is 10, fill in a larger value for scale-out, a smaller value for scale-down (the expected value must be no less than the usage value during scale-down), or the same value for no change.
         * @type {number || null}
         */
        this.InquireNum = null;

        /**
         * Project ID. Fill in the original value for no change.
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Resource alias. Fill in the original value for no change.
         * @type {string || null}
         */
        this.Alias = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.InquireNum = 'InquireNum' in params ? params.InquireNum : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.Alias = 'Alias' in params ? params.Alias : null;

    }
}

/**
 * Index Rule
 * @class
 */
class RuleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Full-text index configurations
         * @type {FullTextInfo || null}
         */
        this.FullText = null;

        /**
         * Key-value index configurations
         * @type {KeyValueInfo || null}
         */
        this.KeyValue = null;

        /**
         * Meta field index configuration
         * @type {KeyValueInfo || null}
         */
        this.Tag = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FullText) {
            let obj = new FullTextInfo();
            obj.deserialize(params.FullText)
            this.FullText = obj;
        }

        if (params.KeyValue) {
            let obj = new KeyValueInfo();
            obj.deserialize(params.KeyValue)
            this.KeyValue = obj;
        }

        if (params.Tag) {
            let obj = new KeyValueInfo();
            obj.deserialize(params.Tag)
            this.Tag = obj;
        }

    }
}

/**
 * DeleteBaselineStrategy response structure.
 * @class
 */
class DeleteBaselineStrategyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWebHookRule request structure.
 * @class
 */
class ModifyWebHookRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule content
         * @type {WebHookRuleDetail || null}
         */
        this.Data = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new WebHookRuleDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }

    }
}

/**
 * Information on the authorization bound to the machine
 * @class
 */
class MachineLicenseDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * xx
         * @type {number || null}
         */
        this.PayMode = null;

        /**
         * xxx
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * xxx
         * @type {string || null}
         */
        this.InquireKey = null;

        /**
         * xxx
         * @type {number || null}
         */
        this.SourceType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.PayMode = 'PayMode' in params ? params.PayMode : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.InquireKey = 'InquireKey' in params ? params.InquireKey : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;

    }
}

/**
 * DescribeBashEventsInfo request structure.
 * @class
 */
class DescribeBashEventsInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ExportAssetDatabaseList request structure.
 * @class
 */
class ExportAssetDatabaseListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>User- string - required: no - running user</li>
<li>Ip - String - required: no - bound IP address</li>
<li>Port - Int - required: no - port</li>
<li>Name - Int - required: no - database name
0: all
1:MySQL
2:Redis
3:Oracle
4:MongoDB
5:MemCache
6:PostgreSQL
7:HBase
8:DB2
9:Sybase
10:TiDB</li>
<li>Proto - String - required: no - protocol: 1: TCP; 2: UDP; 3: unknown</li>
<li>OsType - String - required: no - operating system: Linux/Windows</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Sorting order: asc for ascending or desc for descending
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Add log-in audit allowlist entity
 * @class
 */
class HostLoginWhiteObj extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlisted region
         * @type {Array.<Place> || null}
         */
        this.Places = null;

        /**
         * Allowlisted source IP address. IP ranges are supported. Multiple IPs are separated by commas.
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Allowlisted username separated by commas
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Whether the allowlist is effective globally. 1: all hosts; 0: only a single host.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * List of information on machines where the allowlist is effective
         * @type {Array.<HostInfo> || null}
         */
        this.HostInfos = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Places) {
            this.Places = new Array();
            for (let z in params.Places) {
                let obj = new Place();
                obj.deserialize(params.Places[z]);
                this.Places.push(obj);
            }
        }
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;

        if (params.HostInfos) {
            this.HostInfos = new Array();
            for (let z in params.HostInfos) {
                let obj = new HostInfo();
                obj.deserialize(params.HostInfos[z]);
                this.HostInfos.push(obj);
            }
        }
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * ClearLocalStorage response structure.
 * @class
 */
class ClearLocalStorageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateNetAttackWhiteList request structure.
 * @class
 */
class CreateNetAttackWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the allowlist applies to all hosts. 0: no; 1: yes.
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Source IP. Single IP: 1.1.1.1, IP Range: 1.1.1.1-1.1.2.1, IP Range: 1.1.1.0/24 
         * @type {Array.<string> || null}
         */
        this.SrcIp = null;

        /**
         * QUUID list
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Whether to allowlist all alarms that match this rule: 1: Yes, 0: No.
         * @type {number || null}
         */
        this.DealOldEvents = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * DescribeUndoVulCounts response structure.
 * @class
 */
class DescribeUndoVulCountsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of unfixed vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.UndoVulCount = null;

        /**
         * Number of unfixed hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.UndoHostCount = null;

        /**
         * Number of Standard Edition hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NotProfessionCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UndoVulCount = 'UndoVulCount' in params ? params.UndoVulCount : null;
        this.UndoHostCount = 'UndoHostCount' in params ? params.UndoHostCount : null;
        this.NotProfessionCount = 'NotProfessionCount' in params ? params.NotProfessionCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineScanSchedule response structure.
 * @class
 */
class DescribeBaselineScanScheduleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Check progress (percentage)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Schedule = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Schedule = 'Schedule' in params ? params.Schedule : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Malicious request allowlist information
 * @class
 */
class MaliciousRequestWhiteListInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Mark = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Mark = 'Mark' in params ? params.Mark : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * DeleteBashEvents response structure.
 * @class
 */
class DeleteBashEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetProcessInfoList request structure.
 * @class
 */
class DescribeAssetProcessInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name - String - required: no - process name</li>
<li>User - String - required: no - process user</li>
<li>Group - String - required: no - process user group</li>
<li>Pid - uint64 - required: no - process ID</li>
<li>Ppid - uint64 - required: no - parent process ID</li>
<li>OsType - uint64 - required: no - Windows/Linux</li>
<li>Status - string - required: no - process status:
1: R, runnable
2: S, interruptible
3: D, uninterruptible
4: T, stopped or traced
5: Z, zombie
6: X, to be terminated</li>
<li>RunTimeStart - String - required: no - running start time</li>
<li>RunTimeEnd - String - required: no - running end time</li>
<li>InstallByPackage - uint64 - required: no - whether to install by package: 0: no; 1: yes</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|StartTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Emergency notification entity
 * @class
 */
class VulEmergentMsgInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability publish time
         * @type {string || null}
         */
        this.PublishTime = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.PublishTime = 'PublishTime' in params ? params.PublishTime : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * SearchLog response structure.
 * @class
 */
class SearchLogResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of raw logs matching the retrieval criteria
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Pass through the Context value returned by this API, which can access more logs later, with an expiration time of 1 hour.
         * @type {string || null}
         */
        this.Context = null;

        /**
         * Whether all logs meeting the retrieval criteria have been returned. If not, use the Context parameter to retrieve more logs.
         * @type {boolean || null}
         */
        this.ListOver = null;

        /**
         * Whether the returned data is the SQL analysis result
         * @type {boolean || null}
         */
        this.Analysis = null;

        /**
         * Raw logs matching the retrieval criteria
         * @type {Array.<LogInfo> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Count = 'Count' in params ? params.Count : null;
        this.Context = 'Context' in params ? params.Context : null;
        this.ListOver = 'ListOver' in params ? params.ListOver : null;
        this.Analysis = 'Analysis' in params ? params.Analysis : null;

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new LogInfo();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Asset management network interface information
 * @class
 */
class AssetNetworkCardInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Network interface name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * IPv4 address
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Gateway
         * @type {string || null}
         */
        this.GateWay = null;

        /**
         * MAC address
         * @type {string || null}
         */
        this.Mac = null;

        /**
         * IPv6 address
         * @type {string || null}
         */
        this.Ipv6 = null;

        /**
         * DNS server
         * @type {string || null}
         */
        this.DnsServer = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.GateWay = 'GateWay' in params ? params.GateWay : null;
        this.Mac = 'Mac' in params ? params.Mac : null;
        this.Ipv6 = 'Ipv6' in params ? params.Ipv6 : null;
        this.DnsServer = 'DnsServer' in params ? params.DnsServer : null;

    }
}

/**
 * DescribeAssetWebFrameList request structure.
 * @class
 */
class DescribeAssetWebFrameListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name - String - required: no - framework name</li>
<li>NameStrict - String - required: no - framework name (strict match)</li>
<li>Lang - String - required: no - framework language: java/python</li>
<li>Type - String - required: no - service type:
0: all
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
<li>Os -String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|JarCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeMonthInspectionReport response structure.
 * @class
 */
class DescribeMonthInspectionReportResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Inspection report list
         * @type {Array.<MonthInspectionReport> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MonthInspectionReport();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineHostTop response structure.
 * @class
 */
class DescribeBaselineHostTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top host baseline policy events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineHostTopList> || null}
         */
        this.BaselineHostTopList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BaselineHostTopList) {
            this.BaselineHostTopList = new Array();
            for (let z in params.BaselineHostTopList) {
                let obj = new BaselineHostTopList();
                obj.deserialize(params.BaselineHostTopList[z]);
                this.BaselineHostTopList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Host information entity of the log-in audit allowlist
 * @class
 */
class HostDesc extends  AbstractModel {
    constructor(){
        super();

        /**
         * Yunjing client ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Machine name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Machine IP address. This parameter is left blank for terminated servers.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address. This parameter is left blank for terminated servers.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Tag information array
         * @type {Array.<MachineTag> || null}
         */
        this.Tags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new MachineTag();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }

    }
}

/**
 * DeleteBashRules response structure.
 * @class
 */
class DeleteBashRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeDirectConnectInstallCommand response structure.
 * @class
 */
class DescribeDirectConnectInstallCommandResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * IP address for the installation command
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Token for the installation command
         * @type {string || null}
         */
        this.Token = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.Token = 'Token' in params ? params.Token : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyFileTamperEvents request structure.
 * @class
 */
class ModifyFileTamperEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Status. 1: added to allowlist; 2: deleted; 3: ignored.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Corresponding event ID
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * RetryVulFix response structure.
 * @class
 */
class RetryVulFixResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulList response structure.
 * @class
 */
class ExportVulListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download URL of the exported file (deprecated)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * ID of the exported file, which can be downloaded using the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic information on the server list in asset fingerprint
 * @class
 */
class AssetMachineBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Private IP address of server
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system name
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * CPU information
         * @type {string || null}
         */
        this.Cpu = null;

        /**
         * Memory capacity, in GB
         * @type {number || null}
         */
        this.MemSize = null;

        /**
         * Memory utilization, in percentage
         * @type {string || null}
         */
        this.MemLoad = null;

        /**
         * Hard disk capacity, in GB
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * Hard disk utilization, in percentage
         * @type {string || null}
         */
        this.DiskLoad = null;

        /**
         * Number of partitions
         * @type {number || null}
         */
        this.PartitionCount = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * CPU count
         * @type {number || null}
         */
        this.CpuSize = null;

        /**
         * CPU utilization, in percentage
         * @type {string || null}
         */
        this.CpuLoad = null;

        /**
         * Tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Whether it is newly added [0 - no;1 - yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * CPU load readings (only valid for Linux systems)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CpuLoadNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Cpu = 'Cpu' in params ? params.Cpu : null;
        this.MemSize = 'MemSize' in params ? params.MemSize : null;
        this.MemLoad = 'MemLoad' in params ? params.MemLoad : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.DiskLoad = 'DiskLoad' in params ? params.DiskLoad : null;
        this.PartitionCount = 'PartitionCount' in params ? params.PartitionCount : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CpuSize = 'CpuSize' in params ? params.CpuSize : null;
        this.CpuLoad = 'CpuLoad' in params ? params.CpuLoad : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.CpuLoadNum = 'CpuLoadNum' in params ? params.CpuLoadNum : null;

    }
}

/**
 * ExportRansomDefenseMachineList request structure.
 * @class
 */
class ExportRansomDefenseMachineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>Ips - String - required: no - IP address for querying</li>
<li>MachineNames - String - required: no - instance name for querying</li>
<li>Names - String - required: no - instance name for querying</li>
<li>Status - String - required: no - policy status: 0: backup in progress; 1: backup succeeded; 2: backup failed</li>
<li>LastBackupTimeBegin - String - required: no - start of the last backup time</li>
<li>LastBackupTimeEnd - String - required: no - end of the last backup time</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, supporting CreateTime and MachineCount
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeHistoryService response structure.
 * @class
 */
class DescribeHistoryServiceResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 1: available for purchase; 2: specification adjustment only; 3: redirection to renewal management page only.
         * @type {number || null}
         */
        this.BuyStatus = null;

        /**
         * Capacity purchased by the user, in GB
         * @type {number || null}
         */
        this.InquireNum = null;

        /**
         * Expiration time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Whether automatic renewal is enabled. 0: initial value; 1: enabled; 2: disabled.
         * @type {number || null}
         */
        this.IsAutoOpenRenew = null;

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * 0: not activated; 1: normal; 2: isolated; 3: terminated.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BuyStatus = 'BuyStatus' in params ? params.BuyStatus : null;
        this.InquireNum = 'InquireNum' in params ? params.InquireNum : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.IsAutoOpenRenew = 'IsAutoOpenRenew' in params ? params.IsAutoOpenRenew : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on the host affected by baseline
 * @class
 */
class BaselineEffectHost extends  AbstractModel {
    constructor(){
        super();

        /**
         * Passed item
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PassCount = null;

        /**
         * Risky item
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FailCount = null;

        /**
         * First check time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstScanTime = null;

        /**
         * Last check time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastScanTime = null;

        /**
         * Risky item processing status. 0: failed; 1: passed.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host alias
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AliasName = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Check status
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MaxStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PassCount = 'PassCount' in params ? params.PassCount : null;
        this.FailCount = 'FailCount' in params ? params.FailCount : null;
        this.FirstScanTime = 'FirstScanTime' in params ? params.FirstScanTime : null;
        this.LastScanTime = 'LastScanTime' in params ? params.LastScanTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.AliasName = 'AliasName' in params ? params.AliasName : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MaxStatus = 'MaxStatus' in params ? params.MaxStatus : null;

    }
}

/**
 * DescribeRiskProcessEvents request structure.
 * @class
 */
class DescribeRiskProcessEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>HostId - String - required: no - host ID</li>
<li>IpOrName - String - required: no - host IP or host name</li>
<li>VirusName - String - required: no - virus name</li>
<li>ProcessId - String - required: no - process ID</li>
<li>FilePath - String - required: no - process path</li>
<li>BeginTime - String - required: no - process startup time - begin</li>
<li>BeginTime - String - required: no - process startup time - end</li>
<li>Status - String - required: no - status for filtering: 0: pending; 1: scanning; 2: scanned; 3: exited; 4: trusted</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting order: [ASC|DESC]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * [StartTime: Process start time | DetectTime: Last detection time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeAssetTypes response structure.
 * @class
 */
class DescribeAssetTypesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asset fingerprint type list
         * @type {Array.<AssetType> || null}
         */
        this.Types = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Types) {
            this.Types = new Array();
            for (let z in params.Types) {
                let obj = new AssetType();
                obj.deserialize(params.Types[z]);
                this.Types.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenEmergentMsg request structure.
 * @class
 */
class DescribeScreenEmergentMsgRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyAutoOpenProVersionConfig response structure.
 * @class
 */
class ModifyAutoOpenProVersionConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulInfoCvss response structure.
 * @class
 */
class DescribeVulInfoCvssResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulLevel = null;

        /**
         * Vulnerability Classification: 1: Web-CMS Vulnerability 2: Application Vulnerabilities 4: Linux Software Vulnerabilities 5: Windows System Vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulType = null;

        /**
         * Vulnerability Description Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Fixing solution
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RepairPlan = null;

        /**
         * Vulnerability CVE ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * Reference link
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Reference = null;

        /**
         * CVSS Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CVSS = null;

        /**
         * Release date
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PublicDate = null;

        /**
         * CVSS Score
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CvssScore = null;

        /**
         * CVSS Details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CveInfo = null;

        /**
         * CVSS score, floating point type
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CvssScoreFloat = null;

        /**
         * Vulnerability Tags, Separated by Multiple Commas
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Labels = null;

        /**
         * Number of Attacks Defended
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DefenseAttackCount = null;

        /**
         * Total Number of Successful Network Repairs. Returns 0 by default for unsupported auto-repair vulnerabilities.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SuccessFixCount = null;

        /**
         * Repair support: 0 - Neither Windows nor Linux supports for repair; 1 - Both Windows and Linux support for repair; 2 - Only Linux supports for repair; 3 - Only Windows supports for repair.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FixSwitch = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.VulLevel = 'VulLevel' in params ? params.VulLevel : null;
        this.VulType = 'VulType' in params ? params.VulType : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.RepairPlan = 'RepairPlan' in params ? params.RepairPlan : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.Reference = 'Reference' in params ? params.Reference : null;
        this.CVSS = 'CVSS' in params ? params.CVSS : null;
        this.PublicDate = 'PublicDate' in params ? params.PublicDate : null;
        this.CvssScore = 'CvssScore' in params ? params.CvssScore : null;
        this.CveInfo = 'CveInfo' in params ? params.CveInfo : null;
        this.CvssScoreFloat = 'CvssScoreFloat' in params ? params.CvssScoreFloat : null;
        this.Labels = 'Labels' in params ? params.Labels : null;
        this.DefenseAttackCount = 'DefenseAttackCount' in params ? params.DefenseAttackCount : null;
        this.SuccessFixCount = 'SuccessFixCount' in params ? params.SuccessFixCount : null;
        this.FixSwitch = 'FixSwitch' in params ? params.FixSwitch : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineStrategyDetail request structure.
 * @class
 */
class DescribeBaselineStrategyDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * User baseline policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;

    }
}

/**
 * ModifyLicenseBinds request structure.
 * @class
 */
class ModifyLicenseBindsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Whether all machines are involved. (If the total number of machines exceeds the available authorizations in the current order, some machines will be skipped.)
         * @type {boolean || null}
         */
        this.IsAll = null;

        /**
         * List of QUUIDs of machines to be bound. This parameter is required when IsAll is set to false. Otherwise, it is ignored. Maximum number: 2,000.
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.IsAll = 'IsAll' in params ? params.IsAll : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;

    }
}

/**
 * Trojan list
 * @class
 */
class MalWareList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Path
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * Description
         * @type {string || null}
         */
        this.VirusName = null;

        /**
         * Status: 4-Pending, 5-Trusted, 6-Isolated, 8-Files Deleted, 14-Processed.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Unique ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host alias
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Feature tag. This field has been deprecated, and no tag will be returned. Tags are returned in the details.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * First running time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileCreateTime = null;

        /**
         * Last running time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileModifierTime = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last scan time
         * @type {string || null}
         */
        this.LatestScanTime = null;

        /**
         * Risk level. 0: unknown; 1: low; 2: medium; 3: high; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Trojan detection platforms, separated with commas. 1: cloud security engine; 2: TAV; 3: BinaryAI; 4: abnormal behavior; 5: threat intelligence.
         * @type {string || null}
         */
        this.CheckPlatform = null;

        /**
         * Whether the Trojan process exists. 0: no; 1: yes.
         * @type {number || null}
         */
        this.ProcessExists = null;

        /**
         * Whether the Trojan file exists. 0: no; 1: yes.
         * @type {number || null}
         */
        this.FileExists = null;

        /**
         * cvm quuid
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Trojan sample MD5
         * @type {string || null}
         */
        this.MD5 = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.VirusName = 'VirusName' in params ? params.VirusName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.FileCreateTime = 'FileCreateTime' in params ? params.FileCreateTime : null;
        this.FileModifierTime = 'FileModifierTime' in params ? params.FileModifierTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.LatestScanTime = 'LatestScanTime' in params ? params.LatestScanTime : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.CheckPlatform = 'CheckPlatform' in params ? params.CheckPlatform : null;
        this.ProcessExists = 'ProcessExists' in params ? params.ProcessExists : null;
        this.FileExists = 'FileExists' in params ? params.FileExists : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MD5 = 'MD5' in params ? params.MD5 : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Policy
 * @class
 */
class WebHookPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * id
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Event type
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WebHookEventKv> || null}
         */
        this.Events = null;

        /**
         * Host range
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WebHookHostLabel> || null}
         */
        this.HostLabels = null;

        /**
         * Recipient
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WebHookReceiver> || null}
         */
        this.Receivers = null;

        /**
         * Format. 0: text; 1: JSON.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Format = null;

        /**
         * Custom passthrough field
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WebHookCustomField> || null}
         */
        this.CustomFields = null;

        /**
         * Enable/Disable [1-Disable, 0-Enable]
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsDisabled = null;

        /**
         * Host list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Number of hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;

        if (params.Events) {
            this.Events = new Array();
            for (let z in params.Events) {
                let obj = new WebHookEventKv();
                obj.deserialize(params.Events[z]);
                this.Events.push(obj);
            }
        }

        if (params.HostLabels) {
            this.HostLabels = new Array();
            for (let z in params.HostLabels) {
                let obj = new WebHookHostLabel();
                obj.deserialize(params.HostLabels[z]);
                this.HostLabels.push(obj);
            }
        }

        if (params.Receivers) {
            this.Receivers = new Array();
            for (let z in params.Receivers) {
                let obj = new WebHookReceiver();
                obj.deserialize(params.Receivers[z]);
                this.Receivers.push(obj);
            }
        }
        this.Format = 'Format' in params ? params.Format : null;

        if (params.CustomFields) {
            this.CustomFields = new Array();
            for (let z in params.CustomFields) {
                let obj = new WebHookCustomField();
                obj.deserialize(params.CustomFields[z]);
                this.CustomFields.push(obj);
            }
        }
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;

    }
}

/**
 * DescribeAssetUserInfo response structure.
 * @class
 */
class DescribeAssetUserInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detailed user information
         * @type {AssetUserDetail || null}
         */
        this.User = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.User) {
            let obj = new AssetUserDetail();
            obj.deserialize(params.User)
            this.User = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseStrategyList request structure.
 * @class
 */
class DescribeRansomDefenseStrategyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameter (maximum quantity: 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria
<li>Ips - String - required: no - IP addresses for querying </li>
<li>MachineNames - String - required: no - instance names for querying </li>
<li>Names - String - required: no - anti-ransomware policy names for querying </li>
<li>Dirs - String - required: no - bait directory </li>
<li>Status - String - required: no - policy status: 0: disabled; 1: enabled </li>
<li>BackupType - String - required: no - backup mode: 0: weekly; 1: daily </li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting order: ASC and DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, supporting CreateTime and MachineCount
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeMachineClearHistory request structure.
 * @class
 */
class DescribeMachineClearHistoryRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
Return entries that match both Keywords and TimeBetween when multiple filtering criteria are used
<li> Keywords: instance name, private IP address, public IP address</li>
<li> TimeBetween: time interval</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Ascending order, ASC, Descending order DESC, ASC by default.
         * @type {string || null}
         */
        this.Order = null;

        /**
         * AgentLastOfflineTime: last offline time of client
AutoClearTime: clearing time
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeServersAndRiskAndFirstInfo response structure.
 * @class
 */
class DescribeServersAndRiskAndFirstInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of risky files
         * @type {number || null}
         */
        this.RiskFileCount = null;

        /**
         * New risky files today
         * @type {number || null}
         */
        this.AddRiskFileCount = null;

        /**
         * Number of affected servers
         * @type {number || null}
         */
        this.ServersCount = null;

        /**
         * Whether it is in trial. true: yes; false: no.
         * @type {boolean || null}
         */
        this.IsFirstCheck = null;

        /**
         * Last Trojan detection time
         * @type {string || null}
         */
        this.ScanTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RiskFileCount = 'RiskFileCount' in params ? params.RiskFileCount : null;
        this.AddRiskFileCount = 'AddRiskFileCount' in params ? params.AddRiskFileCount : null;
        this.ServersCount = 'ServersCount' in params ? params.ServersCount : null;
        this.IsFirstCheck = 'IsFirstCheck' in params ? params.IsFirstCheck : null;
        this.ScanTime = 'ScanTime' in params ? params.ScanTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyMalwareWhiteList request structure.
 * @class
 */
class ModifyMalwareWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist mode. 0: MD5 allowlist; 1: custom.
         * @type {number || null}
         */
        this.Mode = null;

        /**
         * Unique rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * QUUID list
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Whether the allowlist applies to all hosts. 0: no; 1: yes.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Matching pattern; 0 for exact match, 1 for fuzzy match (deprecated)
         * @type {number || null}
         */
        this.MatchType = null;

        /**
         * File Name (regular expression); up to 200 characters in length
         * @type {Array.<string> || null}
         */
        this.FileName = null;

        /**
         * File Directory (regular expression); up to 200 characters in length, content base64 encoded.
         * @type {Array.<string> || null}
         */
        this.FileDirectory = null;

        /**
         * File Suffix; Up to 200 characters in length, content base64 escaped (deprecated).
         * @type {Array.<string> || null}
         */
        this.FileExtension = null;

        /**
         * MD5 list
         * @type {Array.<string> || null}
         */
        this.Md5List = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.MatchType = 'MatchType' in params ? params.MatchType : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileDirectory = 'FileDirectory' in params ? params.FileDirectory : null;
        this.FileExtension = 'FileExtension' in params ? params.FileExtension : null;
        this.Md5List = 'Md5List' in params ? params.Md5List : null;

    }
}

/**
 * DescribeSecurityProtectionStat response structure.
 * @class
 */
class DescribeSecurityProtectionStatResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: asset not paid; 1: agent not installed; 2: Pro or Ultimate Edition for some assets; 3: Pro or Ultimate Edition for all assets.
         * @type {number || null}
         */
        this.AssetManageStat = null;

        /**
         * 0: never scanned or asset not paid; 1: vulnerability risk found; 2: no risk.
         * @type {number || null}
         */
        this.VulManageStat = null;

        /**
         * 0: never scanned or asset not paid; 1: baseline risk found; 2: no risk.
         * @type {number || null}
         */
        this.SecureBasicLineStat = null;

        /**
         * 0: never scanned or asset not paid; 1: scanned and malicious files found; 2: scanned but isolation protection disabled; 3: scanned, protection enabled, and no risk found.
         * @type {number || null}
         */
        this.MalwareScanStat = null;

        /**
         * Enabling status of password cracking prevention. 0: disabled or asset not paid; 1: enabled; 2: events pending fixing found.
         * @type {number || null}
         */
        this.DefenseBruteAttackStat = null;

        /**
         * Core file monitoring. 0: disabled (asset not paid); 1: enabled.
         * @type {number || null}
         */
        this.FileTamperStat = null;

        /**
         * Web page tamper prevention. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.WebPageStat = null;

        /**
         * Abnormal log-in. 0: unfixed risks found; 1: no risk and allowlist not configured; 2: no risk and allowlist configured.
         * @type {number || null}
         */
        this.LoginLogStat = null;

        /**
         * Password cracking risk detection. 0: unfixed risks found; 1: no risk with detection in progress.
         * @type {number || null}
         */
        this.DiscoverBruteAttackStat = null;

        /**
         * Malicious request. 0: no asset in Pro or Ultimate Edition; 1: unfixed malicious request risks found; 2: paid assets found with no risk.
         * @type {number || null}
         */
        this.MaliciousRequestStat = null;

        /**
         * Local privilege escalation. 0: no asset in Pro or Ultimate Edition; 1: unfixed risks found; 2: paid assets found with no risk.
         * @type {number || null}
         */
        this.PrivilegeStat = null;

        /**
         * Reverse shell. 0: no asset in Pro or Ultimate Edition; 1: unfixed risks found; 2: paid assets found with no risk.
         * @type {number || null}
         */
        this.ReverseShellStat = null;

        /**
         * Expert service. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.ExpertServiceStat = null;

        /**
         * Log analysis. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.LogAnalysisStat = null;

        /**
         * Security alarm. 0: disabled (for all assets); 1: enabled (for at least one asset).
         * @type {number || null}
         */
        this.WarningSetStat = null;

        /**
         * High-risk command. 0: no asset in Pro or Ultimate Edition; 1: unfixed risks found; 2: paid assets found with no risk.
         * @type {number || null}
         */
        this.EventBashStat = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AssetManageStat = 'AssetManageStat' in params ? params.AssetManageStat : null;
        this.VulManageStat = 'VulManageStat' in params ? params.VulManageStat : null;
        this.SecureBasicLineStat = 'SecureBasicLineStat' in params ? params.SecureBasicLineStat : null;
        this.MalwareScanStat = 'MalwareScanStat' in params ? params.MalwareScanStat : null;
        this.DefenseBruteAttackStat = 'DefenseBruteAttackStat' in params ? params.DefenseBruteAttackStat : null;
        this.FileTamperStat = 'FileTamperStat' in params ? params.FileTamperStat : null;
        this.WebPageStat = 'WebPageStat' in params ? params.WebPageStat : null;
        this.LoginLogStat = 'LoginLogStat' in params ? params.LoginLogStat : null;
        this.DiscoverBruteAttackStat = 'DiscoverBruteAttackStat' in params ? params.DiscoverBruteAttackStat : null;
        this.MaliciousRequestStat = 'MaliciousRequestStat' in params ? params.MaliciousRequestStat : null;
        this.PrivilegeStat = 'PrivilegeStat' in params ? params.PrivilegeStat : null;
        this.ReverseShellStat = 'ReverseShellStat' in params ? params.ReverseShellStat : null;
        this.ExpertServiceStat = 'ExpertServiceStat' in params ? params.ExpertServiceStat : null;
        this.LogAnalysisStat = 'LogAnalysisStat' in params ? params.LogAnalysisStat : null;
        this.WarningSetStat = 'WarningSetStat' in params ? params.WarningSetStat : null;
        this.EventBashStat = 'EventBashStat' in params ? params.EventBashStat : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineEffectHostList response structure.
 * @class
 */
class DescribeBaselineEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of affected servers
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineEffectHost> || null}
         */
        this.EffectHostList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.EffectHostList) {
            this.EffectHostList = new Array();
            for (let z in params.EffectHostList) {
                let obj = new BaselineEffectHost();
                obj.deserialize(params.EffectHostList[z]);
                this.EffectHostList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeJavaMemShellPluginInfo request structure.
 * @class
 */
class DescribeJavaMemShellPluginInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter Criteria: Exact match of Pid, fuzzy match of MainClass
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DescribeMachineFileTamperRules request structure.
 * @class
 */
class DescribeMachineFileTamperRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * ExportVulDefenceEvent response structure.
 * @class
 */
class ExportVulDefenceEventResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export file ID, which can be downloaded using the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SetLocalStorageItem request structure.
 * @class
 */
class SetLocalStorageItemRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key
         * @type {string || null}
         */
        this.Key = null;

        /**
         * Value
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Expiration time (unit: second)
         * @type {number || null}
         */
        this.Expire = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.Expire = 'Expire' in params ? params.Expire : null;

    }
}

/**
 * ExportRansomDefenseMachineList response structure.
 * @class
 */
class ExportRansomDefenseMachineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, which is used to obtain the download URL (DownloadUrl) using the asynchronous task export API ExportTasks.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Vulnerability defense scope details
 * @class
 */
class VulDefenceRangeDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Tag
         * @type {string || null}
         */
        this.Label = null;

        /**
         * Vulnerability level. 1: low-risk; 2: medium-risk; 3: high-risk; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * CVSS score
         * @type {number || null}
         */
        this.CvssScore = null;

        /**
         * cve id
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.PublishTime = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.CvssScore = 'CvssScore' in params ? params.CvssScore : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.PublishTime = 'PublishTime' in params ? params.PublishTime : null;
        this.VulId = 'VulId' in params ? params.VulId : null;

    }
}

/**
 * DescribeFileTamperRuleCount request structure.
 * @class
 */
class DescribeFileTamperRuleCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query Host UUIDs, up to 100 queries at a time
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuids = 'Uuids' in params ? params.Uuids : null;

    }
}

/**
 * DescribeBaselineBasicInfo request structure.
 * @class
 */
class DescribeBaselineBasicInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline name
         * @type {string || null}
         */
        this.BaselineName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BaselineName = 'BaselineName' in params ? params.BaselineName : null;

    }
}

/**
 * DescribeDefenceEventDetail request structure.
 * @class
 */
class DescribeDefenceEventDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeMachineGeneral response structure.
 * @class
 */
class DescribeMachineGeneralResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of assets
         * @type {number || null}
         */
        this.MachineCnt = null;

        /**
         * Number of Tencent Cloud machines
         * @type {number || null}
         */
        this.TencentCloudMachineCnt = null;

        /**
         * Number of Alibaba Cloud machines
         * @type {number || null}
         */
        this.AliCloudMachineCnt = null;

        /**
         * Number of Baidu Cloud machines
         * @type {number || null}
         */
        this.BaiduCloudMachineCnt = null;

        /**
         * Number of IDC machines
         * @type {number || null}
         */
        this.IDCMachineCnt = null;

        /**
         * Number of machines from other cloud service vendors
         * @type {number || null}
         */
        this.OtherCloudMachineCnt = null;

        /**
         * Number of protected machines
         * @type {number || null}
         */
        this.ProtectMachineCnt = null;

        /**
         * Number of protected Basic Edition machines
         * @type {number || null}
         */
        this.BaseMachineCnt = null;

        /**
         * Number of protected Pro Edition machines
         * @type {number || null}
         */
        this.SpecialtyMachineCnt = null;

        /**
         * Number of protected Ultimate Edition machines
         * @type {number || null}
         */
        this.FlagshipMachineCnt = null;

        /**
         * Number of risky machines
         * @type {number || null}
         */
        this.RiskMachineCnt = null;

        /**
         * Number of new risky machines compared with that yesterday
         * @type {number || null}
         */
        this.CompareYesterdayRiskMachineCnt = null;

        /**
         * Number of new unprotected machines compared with that yesterday
         * @type {number || null}
         */
        this.CompareYesterdayNotProtectMachineCnt = null;

        /**
         * Number of new machines about to expire compared with that yesterday
         * @type {number || null}
         */
        this.CompareYesterdayDeadlineMachineCnt = null;

        /**
         * Number of machines about to expire
         * @type {number || null}
         */
        this.DeadlineMachineCnt = null;

        /**
         * Number of unprotected machines
         * @type {number || null}
         */
        this.NotProtectMachineCnt = null;

        /**
         * Number of protected Inclusive Edition machines (Lighthouse machines)
         * @type {number || null}
         */
        this.LHGeneralDiscountCnt = null;

        /**
         * Number of new hosts compared with that yesterday
         * @type {number || null}
         */
        this.CompareYesterdayMachineCnt = null;

        /**
         * Auto-cleanup Time, maximum 720 hours, minimum 0, 0 by default, 0=OFF
         * @type {number || null}
         */
        this.MachineDestroyAfterOfflineHours = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineCnt = 'MachineCnt' in params ? params.MachineCnt : null;
        this.TencentCloudMachineCnt = 'TencentCloudMachineCnt' in params ? params.TencentCloudMachineCnt : null;
        this.AliCloudMachineCnt = 'AliCloudMachineCnt' in params ? params.AliCloudMachineCnt : null;
        this.BaiduCloudMachineCnt = 'BaiduCloudMachineCnt' in params ? params.BaiduCloudMachineCnt : null;
        this.IDCMachineCnt = 'IDCMachineCnt' in params ? params.IDCMachineCnt : null;
        this.OtherCloudMachineCnt = 'OtherCloudMachineCnt' in params ? params.OtherCloudMachineCnt : null;
        this.ProtectMachineCnt = 'ProtectMachineCnt' in params ? params.ProtectMachineCnt : null;
        this.BaseMachineCnt = 'BaseMachineCnt' in params ? params.BaseMachineCnt : null;
        this.SpecialtyMachineCnt = 'SpecialtyMachineCnt' in params ? params.SpecialtyMachineCnt : null;
        this.FlagshipMachineCnt = 'FlagshipMachineCnt' in params ? params.FlagshipMachineCnt : null;
        this.RiskMachineCnt = 'RiskMachineCnt' in params ? params.RiskMachineCnt : null;
        this.CompareYesterdayRiskMachineCnt = 'CompareYesterdayRiskMachineCnt' in params ? params.CompareYesterdayRiskMachineCnt : null;
        this.CompareYesterdayNotProtectMachineCnt = 'CompareYesterdayNotProtectMachineCnt' in params ? params.CompareYesterdayNotProtectMachineCnt : null;
        this.CompareYesterdayDeadlineMachineCnt = 'CompareYesterdayDeadlineMachineCnt' in params ? params.CompareYesterdayDeadlineMachineCnt : null;
        this.DeadlineMachineCnt = 'DeadlineMachineCnt' in params ? params.DeadlineMachineCnt : null;
        this.NotProtectMachineCnt = 'NotProtectMachineCnt' in params ? params.NotProtectMachineCnt : null;
        this.LHGeneralDiscountCnt = 'LHGeneralDiscountCnt' in params ? params.LHGeneralDiscountCnt : null;
        this.CompareYesterdayMachineCnt = 'CompareYesterdayMachineCnt' in params ? params.CompareYesterdayMachineCnt : null;
        this.MachineDestroyAfterOfflineHours = 'MachineDestroyAfterOfflineHours' in params ? params.MachineDestroyAfterOfflineHours : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineClearHistory response structure.
 * @class
 */
class DescribeMachineClearHistoryResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List data
         * @type {Array.<MachineClearHistory> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MachineClearHistory();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeProVersionInfo request structure.
 * @class
 */
class DescribeProVersionInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * RemoveMachine response structure.
 * @class
 */
class RemoveMachineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulCountByDates request structure.
 * @class
 */
class DescribeVulCountByDatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of past days for data query. Subtract 1 from the actual number of days and fill in the value.
         * @type {Array.<number> || null}
         */
        this.LastDays = null;

        /**
         * Vulnerability category. 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Whether the vulnerabilities are emergency vulnerabilities. yes: yes.
         * @type {string || null}
         */
        this.IfEmergency = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LastDays = 'LastDays' in params ? params.LastDays : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.IfEmergency = 'IfEmergency' in params ? params.IfEmergency : null;

    }
}

/**
 * EditReverseShellRules request structure.
 * @class
 */
class EditReverseShellRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID (leave this parameter blank for addition)
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID array
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Target IP address
         * @type {string || null}
         */
        this.DestIp = null;

        /**
         * Target port
         * @type {string || null}
         */
        this.DestPort = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Whether the rule is global (not global by default)
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * ID of the associated event when clicking Add to Allowlist on the event list and details page (leave this parameter blank for rule addition)
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.DestIp = 'DestIp' in params ? params.DestIp : null;
        this.DestPort = 'DestPort' in params ? params.DestPort : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DescribeAssetWebServiceCount request structure.
 * @class
 */
class DescribeAssetWebServiceCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Return a list of all Web services containing Name in the name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * Security report list
 * @class
 */
class Broadcasts extends  AbstractModel {
    constructor(){
        super();

        /**
         * Article name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Type: 0: emergency notification; 1: feature update; 2: industry honor; 3: version release
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Subtitle
         * @type {string || null}
         */
        this.Subtitle = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Article unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Severity level. 0: none; 1: critical; 2: high-risk; 3: medium-risk; 4: low-risk
         * @type {number || null}
         */
        this.Level = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Title = 'Title' in params ? params.Title : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Subtitle = 'Subtitle' in params ? params.Subtitle : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Level = 'Level' in params ? params.Level : null;

    }
}

/**
 * CreateLicenseOrder response structure.
 * @class
 */
class CreateLicenseOrderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Order ID list
         * @type {Array.<string> || null}
         */
        this.DealNames = null;

        /**
         * Resource ID list. This field needs to be left blank for prepaid orders.
         * @type {Array.<string> || null}
         */
        this.ResourceIds = null;

        /**
         * Large order ID. This field needs to be left blank for postpaid orders.
         * @type {string || null}
         */
        this.BigDealId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DealNames = 'DealNames' in params ? params.DealNames : null;
        this.ResourceIds = 'ResourceIds' in params ? params.ResourceIds : null;
        this.BigDealId = 'BigDealId' in params ? params.BigDealId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBashPolicyStatus request structure.
 * @class
 */
class ModifyBashPolicyStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Whether to disable
         * @type {number || null}
         */
        this.Enable = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Enable = 'Enable' in params ? params.Enable : null;

    }
}

/**
 * DescribeAssetWebLocationPathList request structure.
 * @class
 */
class DescribeAssetWebLocationPathListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Web site ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Number of returned lists. It is 10 by default, and the maximum number is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * Security report article details
 * @class
 */
class BroadcastInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Article name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Redirection location: 0: no redirection; 1: virus scanning; 2: vulnerability scan; 3: security baseline
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.GotoType = null;

        /**
         * Subtitle
         * @type {string || null}
         */
        this.Subtitle = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Rich text content information
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Article unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Type: 0: emergency notification; 1: feature update; 2: industry honor; 3: version release
         * @type {number || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Title = 'Title' in params ? params.Title : null;
        this.GotoType = 'GotoType' in params ? params.GotoType : null;
        this.Subtitle = 'Subtitle' in params ? params.Subtitle : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Content = 'Content' in params ? params.Content : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Network attack log
 * @class
 */
class DefendAttackLog extends  AbstractModel {
    constructor(){
        super();

        /**
         * Log ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Source IP
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Source port
         * @type {number || null}
         */
        this.SrcPort = null;

        /**
         * Attack method
         * @type {string || null}
         */
        this.HttpMethod = null;

        /**
         * Attack description
         * @type {string || null}
         */
        this.HttpCgi = null;

        /**
         * Attack parameter
         * @type {string || null}
         */
        this.HttpParam = null;

        /**
         * Threat type
         * @type {string || null}
         */
        this.VulType = null;

        /**
         * Attack time
         * @type {string || null}
         */
        this.CreatedAt = null;

        /**
         * Target server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Target server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Target IP
         * @type {string || null}
         */
        this.DstIp = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Attack content
         * @type {string || null}
         */
        this.HttpContent = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.SrcPort = 'SrcPort' in params ? params.SrcPort : null;
        this.HttpMethod = 'HttpMethod' in params ? params.HttpMethod : null;
        this.HttpCgi = 'HttpCgi' in params ? params.HttpCgi : null;
        this.HttpParam = 'HttpParam' in params ? params.HttpParam : null;
        this.VulType = 'VulType' in params ? params.VulType : null;
        this.CreatedAt = 'CreatedAt' in params ? params.CreatedAt : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.DstIp = 'DstIp' in params ? params.DstIp : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.HttpContent = 'HttpContent' in params ? params.HttpContent : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DeleteRiskDnsEvent request structure.
 * @class
 */
class DeleteRiskDnsEventRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request record ID array. (The maximum number of IDs is 100.) Delete all if it is left blank.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Local privilege escalation data
 * @class
 */
class PrivilegeEventInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Yunjing ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.FullPath = null;

        /**
         * Execute commands
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * Username
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * User group
         * @type {string || null}
         */
        this.UserGroup = null;

        /**
         * Process file permission
         * @type {string || null}
         */
        this.ProcFilePrivilege = null;

        /**
         * Parent process name
         * @type {string || null}
         */
        this.ParentProcName = null;

        /**
         * Parent process username
         * @type {string || null}
         */
        this.ParentProcUser = null;

        /**
         * Parent process user group
         * @type {string || null}
         */
        this.ParentProcGroup = null;

        /**
         * Parent process path
         * @type {string || null}
         */
        this.ParentProcPath = null;

        /**
         * Process tree json pid: process ID; exe: file path; account: groups and users to which the process belongs; cmdline: execute commands; ssh_service: SSH service IP; ssh_source: log-in source
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Processing status: 0: pending; 2: allowlisted; 3: processed; 4: ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Machine name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Recommended solution
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Hazard description information
         * @type {string || null}
         */
        this.HarmDescribe = null;

        /**
         * Tag
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Reference link
         * @type {Array.<string> || null}
         */
        this.References = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Permission list (Separate multiple items with |.)
         * @type {string || null}
         */
        this.NewCaps = null;

        /**
         * Host online status: OFFLINE; ONLINE
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Processing time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.FullPath = 'FullPath' in params ? params.FullPath : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.UserGroup = 'UserGroup' in params ? params.UserGroup : null;
        this.ProcFilePrivilege = 'ProcFilePrivilege' in params ? params.ProcFilePrivilege : null;
        this.ParentProcName = 'ParentProcName' in params ? params.ParentProcName : null;
        this.ParentProcUser = 'ParentProcUser' in params ? params.ParentProcUser : null;
        this.ParentProcGroup = 'ParentProcGroup' in params ? params.ParentProcGroup : null;
        this.ParentProcPath = 'ParentProcPath' in params ? params.ParentProcPath : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.HarmDescribe = 'HarmDescribe' in params ? params.HarmDescribe : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.References = 'References' in params ? params.References : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.NewCaps = 'NewCaps' in params ? params.NewCaps : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * RansomDefenseRollback response structure.
 * @class
 */
class RansomDefenseRollbackResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetSystemPackageList request structure.
 * @class
 */
class ExportAssetSystemPackageListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - required: no - package name</li>
<li>StartTime - String - required: no - start time of installation</li>
<li>EndTime - String - required: no - end time of installation</li>
<li>Type- int - required: no - installation package type:
1:rpm
2:dpkg
3:java
4:system</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FistTime|InstallTime: installation time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ExportTasks request structure.
 * @class
 */
class ExportTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * DescribeNetAttackWhiteList request structure.
 * @class
 */
class DescribeNetAttackWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>IP - String - required: no - query by host IP</li>
<li>SrcIP- String - required: no - query by allowlisted IP</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting column: [CreateTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeOverviewStatistics response structure.
 * @class
 */
class DescribeOverviewStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of servers online
         * @type {number || null}
         */
        this.OnlineMachineNum = null;

        /**
         * Number of professional servers
         * @type {number || null}
         */
        this.ProVersionMachineNum = null;

        /**
         * Number of Trojan files
         * @type {number || null}
         */
        this.MalwareNum = null;

        /**
         * Number of cross-region log-in
         * @type {number || null}
         */
        this.NonlocalLoginNum = null;

        /**
         * Number of successful brute force cracking
         * @type {number || null}
         */
        this.BruteAttackSuccessNum = null;

        /**
         * Number of vulnerabilities
         * @type {number || null}
         */
        this.VulNum = null;

        /**
         * Number of security baselines
         * @type {number || null}
         */
        this.BaseLineNum = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.OnlineMachineNum = 'OnlineMachineNum' in params ? params.OnlineMachineNum : null;
        this.ProVersionMachineNum = 'ProVersionMachineNum' in params ? params.ProVersionMachineNum : null;
        this.MalwareNum = 'MalwareNum' in params ? params.MalwareNum : null;
        this.NonlocalLoginNum = 'NonlocalLoginNum' in params ? params.NonlocalLoginNum : null;
        this.BruteAttackSuccessNum = 'BruteAttackSuccessNum' in params ? params.BruteAttackSuccessNum : null;
        this.VulNum = 'VulNum' in params ? params.VulNum : null;
        this.BaseLineNum = 'BaseLineNum' in params ? params.BaseLineNum : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyMalwareTimingScanSettings request structure.
 * @class
 */
class ModifyMalwareTimingScanSettingsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection mode. 0: full disk detection; 1: rapid detection
         * @type {number || null}
         */
        this.CheckPattern = null;

        /**
         * Detection interval start time, such as 02:00:00
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Detection interval timeout end time, such as 04:00:00
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Whether all servers. 1: all; 2: specified
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Regular detection switch. 0: off; 1: on
         * @type {number || null}
         */
        this.EnableScan = null;

        /**
         * Monitoring mode. 0: standard; 1: deep
         * @type {number || null}
         */
        this.MonitoringPattern = null;

        /**
         * Scan interval: defaults to 1 per day
         * @type {number || null}
         */
        this.Cycle = null;

        /**
         * Real-time monitoring. 0: off; 1: on
         * @type {number || null}
         */
        this.RealTimeMonitoring = null;

        /**
         * Required for specified servers, a string array of host QUUIDs
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Whether to apply automatic isolation. 1: yes; 0: no
         * @type {number || null}
         */
        this.AutoIsolation = null;

        /**
         * Whether to terminate the process. 1: terminate; 0: not terminate
         * @type {number || null}
         */
        this.KillProcess = null;

        /**
         * 1: clean up; 0: not clean up
<li>This operation will fix tampered system commands, scheduled tasks, and other system files. Please ensure that yum/apt is available during the operation.</li>
         * @type {number || null}
         */
        this.DoClean = null;

        /**
         * 1: standard mode (only critical and high-risk are reported.); 2: enhanced mode (critical, high-risk, and medium-risk are reported.); 3: strict mode (critical, high-risk, medium-risk, low-risk, and prompt are reported.)
         * @type {number || null}
         */
        this.EngineType = null;

        /**
         * Heuristic Engine Switch: 0 OFF, 1 ON.
         * @type {number || null}
         */
        this.EnableInspiredEngine = null;

        /**
         * Whether to enable malicious process killing [0: Not Enabled; 1: Enabled]
         * @type {number || null}
         */
        this.EnableMemShellScan = null;

        /**
         * Protection mode: 0: standard; 1: important period guarantee
         * @type {number || null}
         */
        this.ProtectMode = null;

        /**
         * Scope of detection: 0: malicious files other than scripts; 1: all malicious files
         * @type {number || null}
         */
        this.ProtectFileScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CheckPattern = 'CheckPattern' in params ? params.CheckPattern : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.EnableScan = 'EnableScan' in params ? params.EnableScan : null;
        this.MonitoringPattern = 'MonitoringPattern' in params ? params.MonitoringPattern : null;
        this.Cycle = 'Cycle' in params ? params.Cycle : null;
        this.RealTimeMonitoring = 'RealTimeMonitoring' in params ? params.RealTimeMonitoring : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.AutoIsolation = 'AutoIsolation' in params ? params.AutoIsolation : null;
        this.KillProcess = 'KillProcess' in params ? params.KillProcess : null;
        this.DoClean = 'DoClean' in params ? params.DoClean : null;
        this.EngineType = 'EngineType' in params ? params.EngineType : null;
        this.EnableInspiredEngine = 'EnableInspiredEngine' in params ? params.EnableInspiredEngine : null;
        this.EnableMemShellScan = 'EnableMemShellScan' in params ? params.EnableMemShellScan : null;
        this.ProtectMode = 'ProtectMode' in params ? params.ProtectMode : null;
        this.ProtectFileScope = 'ProtectFileScope' in params ? params.ProtectFileScope : null;

    }
}

/**
 * DescribeAssetTotalCount request structure.
 * @class
 */
class DescribeAssetTotalCountRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeWebHookRules response structure.
 * @class
 */
class DescribeWebHookRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Rule content
         * @type {Array.<WebHookRuleSummary> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new WebHookRuleSummary();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Vulnerability details
 * @class
 */
class VulDetailInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability level
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * CVE ID
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * 1: web-cms vulnerabilities; 2: application vulnerabilities; 4: Linux software vulnerabilities; 5: Windows system vulnerabilities; 0: emergency vulnerabilities
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Vulnerability description
         * @type {string || null}
         */
        this.Descript = null;

        /**
         * Fixing suggestion
         * @type {string || null}
         */
        this.Fix = null;

        /**
         * Reference link
         * @type {string || null}
         */
        this.Reference = null;

        /**
         * CVSS score
         * @type {number || null}
         */
        this.CvssScore = null;

        /**
         * CVSS details
         * @type {string || null}
         */
        this.Cvss = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.PublishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.Descript = 'Descript' in params ? params.Descript : null;
        this.Fix = 'Fix' in params ? params.Fix : null;
        this.Reference = 'Reference' in params ? params.Reference : null;
        this.CvssScore = 'CvssScore' in params ? params.CvssScore : null;
        this.Cvss = 'Cvss' in params ? params.Cvss : null;
        this.PublishTime = 'PublishTime' in params ? params.PublishTime : null;

    }
}

/**
 * Number of vulnerability levels
 * @class
 */
class VulLevelCountInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability level
         * @type {number || null}
         */
        this.VulLevel = null;

        /**
         * Number of vulnerabilities
         * @type {number || null}
         */
        this.VulCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulLevel = 'VulLevel' in params ? params.VulLevel : null;
        this.VulCount = 'VulCount' in params ? params.VulCount : null;

    }
}

/**
 * ExportBashEvents response structure.
 * @class
 */
class ExportBashEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export file download link
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMonthInspectionReport request structure.
 * @class
 */
class DescribeMonthInspectionReportRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination size
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination step size
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * DescribeDirectConnectInstallCommand request structure.
 * @class
 */
class DescribeDirectConnectInstallCommandRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region identifier
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * VPC ID
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Command expiration time
         * @type {string || null}
         */
        this.ExpireDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.ExpireDate = 'ExpireDate' in params ? params.ExpireDate : null;

    }
}

/**
 * Attack backtracking node information
 * @class
 */
class VertexInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Node type: process: 1; network: 2; file: 3; ssh: 4;
         * @type {number || null}
         */
        this.Type = null;

        /**
         * VID contained in this node
         * @type {string || null}
         */
        this.Vid = null;

        /**
         * Parent node VID of this node
         * @type {string || null}
         */
        this.ParentVid = null;

        /**
         * Whether a leaf node
         * @type {boolean || null}
         */
        this.IsLeaf = null;

        /**
         * Process name, used when Type=1
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ProcNamePrefix = null;

        /**
         * Process name MD5, used when Type=1
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ProcNameMd5 = null;

        /**
         * Command line, used when Type=1
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CmdLinePrefix = null;

        /**
         * Command line MD5, used when Type=1
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CmdLineMd5 = null;

        /**
         * File path, used when Type=3
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FilePathPrefix = null;

        /**
         * Request destination address, used when Type=2
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AddressPrefix = null;

        /**
         * Whether a vulnerability node
         * @type {boolean || null}
         */
        this.IsWeDetect = null;

        /**
         * Whether an alarm node
         * @type {boolean || null}
         */
        this.IsAlarm = null;

        /**
         * File path MD5, used when Type=3
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FilePathMd5 = null;

        /**
         * Request destination address MD5, used when Type=2
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AddressMd5 = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Vid = 'Vid' in params ? params.Vid : null;
        this.ParentVid = 'ParentVid' in params ? params.ParentVid : null;
        this.IsLeaf = 'IsLeaf' in params ? params.IsLeaf : null;
        this.ProcNamePrefix = 'ProcNamePrefix' in params ? params.ProcNamePrefix : null;
        this.ProcNameMd5 = 'ProcNameMd5' in params ? params.ProcNameMd5 : null;
        this.CmdLinePrefix = 'CmdLinePrefix' in params ? params.CmdLinePrefix : null;
        this.CmdLineMd5 = 'CmdLineMd5' in params ? params.CmdLineMd5 : null;
        this.FilePathPrefix = 'FilePathPrefix' in params ? params.FilePathPrefix : null;
        this.AddressPrefix = 'AddressPrefix' in params ? params.AddressPrefix : null;
        this.IsWeDetect = 'IsWeDetect' in params ? params.IsWeDetect : null;
        this.IsAlarm = 'IsAlarm' in params ? params.IsAlarm : null;
        this.FilePathMd5 = 'FilePathMd5' in params ? params.FilePathMd5 : null;
        this.AddressMd5 = 'AddressMd5' in params ? params.AddressMd5 : null;

    }
}

/**
 * DescribeNetAttackSetting response structure.
 * @class
 */
class DescribeNetAttackSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0 - Disable Network Attack Detection; 1 - Enable Network Attack Detection.
         * @type {number || null}
         */
        this.NetAttackEnable = null;

        /**
         * 0: New warning events pending processing by default, 1: New warning events processed by default, 3: New warning events ignored by default.
         * @type {number || null}
         */
        this.NetAttackAlarmStatus = null;

        /**
         * 1 - All Premium Edition Hosts, 0 - Hosts in InstanceIds List
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Selected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.InstanceIds = null;

        /**
         * Custom Hosts to Exclude
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ExcludeInstanceIds = null;

        /**
         * New assets automatically include: 0 - Do not include, 1 - include.
         * @type {number || null}
         */
        this.AutoInclude = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NetAttackEnable = 'NetAttackEnable' in params ? params.NetAttackEnable : null;
        this.NetAttackAlarmStatus = 'NetAttackAlarmStatus' in params ? params.NetAttackAlarmStatus : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.InstanceIds = 'InstanceIds' in params ? params.InstanceIds : null;
        this.ExcludeInstanceIds = 'ExcludeInstanceIds' in params ? params.ExcludeInstanceIds : null;
        this.AutoInclude = 'AutoInclude' in params ? params.AutoInclude : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Reverse Shell rule
 * @class
 */
class ReverseShellRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Target IP
         * @type {string || null}
         */
        this.DestIp = null;

        /**
         * Target port
         * @type {string || null}
         */
        this.DestPort = null;

        /**
         * Operator
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * Whether a global rule
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Status (0: valid; 1: invalid)
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.Hostip = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.DestIp = 'DestIp' in params ? params.DestIp : null;
        this.DestPort = 'DestPort' in params ? params.DestPort : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Hostip = 'Hostip' in params ? params.Hostip : null;

    }
}

/**
 * DescribeAESKey response structure.
 * @class
 */
class DescribeAESKeyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashRules response structure.
 * @class
 */
class DescribeBashRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List content
         * @type {Array.<BashRule> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BashRule();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAvailableExpertServiceDetail response structure.
 * @class
 */
class DescribeAvailableExpertServiceDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security manager order
         * @type {Array.<ExpertServiceOrderInfo> || null}
         */
        this.ExpertService = null;

        /**
         * Number of available emergency responses
         * @type {number || null}
         */
        this.EmergencyResponse = null;

        /**
         * 
         * @type {number || null}
         */
        this.ProtectNet = null;

        /**
         * Whether you purchased security manager
         * @type {boolean || null}
         */
        this.ExpertServiceBuy = null;

        /**
         * Whether you purchased emergency response
         * @type {boolean || null}
         */
        this.EmergencyResponseBuy = null;

        /**
         * 
         * @type {boolean || null}
         */
        this.ProtectNetBuy = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ExpertService) {
            this.ExpertService = new Array();
            for (let z in params.ExpertService) {
                let obj = new ExpertServiceOrderInfo();
                obj.deserialize(params.ExpertService[z]);
                this.ExpertService.push(obj);
            }
        }
        this.EmergencyResponse = 'EmergencyResponse' in params ? params.EmergencyResponse : null;
        this.ProtectNet = 'ProtectNet' in params ? params.ProtectNet : null;
        this.ExpertServiceBuy = 'ExpertServiceBuy' in params ? params.ExpertServiceBuy : null;
        this.EmergencyResponseBuy = 'EmergencyResponseBuy' in params ? params.EmergencyResponseBuy : null;
        this.ProtectNetBuy = 'ProtectNetBuy' in params ? params.ProtectNetBuy : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogStorageConfig request structure.
 * @class
 */
class DescribeLogStorageConfigRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ExportAssetWebLocationList response structure.
 * @class
 */
class ExportAssetWebLocationListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Visualized security report on the large screen
 * @class
 */
class ScreenBroadcasts extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security report article title
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Severity level of security report article: 0: none; 1: critical; 2: high-risk; 3: medium-risk; 4: low-risk
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.Time = null;

        /**
         * Article ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Title = 'Title' in params ? params.Title : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Time = 'Time' in params ? params.Time : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ChangeRuleEventsIgnoreStatus request structure.
 * @class
 */
class ChangeRuleEventsIgnoreStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Ignore status: 0: unignore; 1: ignore
         * @type {number || null}
         */
        this.IgnoreStatus = null;

        /**
         * Detection item ID array
         * @type {Array.<number> || null}
         */
        this.RuleIdList = null;

        /**
         * Event ID array
         * @type {Array.<number> || null}
         */
        this.EventIdList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IgnoreStatus = 'IgnoreStatus' in params ? params.IgnoreStatus : null;
        this.RuleIdList = 'RuleIdList' in params ? params.RuleIdList : null;
        this.EventIdList = 'EventIdList' in params ? params.EventIdList : null;

    }
}

/**
 * Asset fingerprint type description
 * @class
 */
class AssetType extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Type name
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * ModifyWebHookReceiver response structure.
 * @class
 */
class ModifyWebHookReceiverResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Port statistics list
 * @class
 */
class OpenPortStatistics extends  AbstractModel {
    constructor(){
        super();

        /**
         * Port number
         * @type {number || null}
         */
        this.Port = null;

        /**
         * Number of Hosts
         * @type {number || null}
         */
        this.MachineNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Port = 'Port' in params ? params.Port : null;
        this.MachineNum = 'MachineNum' in params ? params.MachineNum : null;

    }
}

/**
 * DescribeRansomDefenseMachineList request structure.
 * @class
 */
class DescribeRansomDefenseMachineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum quantity is 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Ips - String - required: no - query by IP</li>
<li>MachineNames - String - required: no - query by instance name</li>
<li>Names - String - required: no - query by policy name</li>
<li>Status - String - required: no - policy status: 0: backup in progress; 1: backup successful; 2: backup failed; 9: no backup</li>
<li>LastBackupStatus - String - required: no - last backup status: 0: backup in progress; 1: backup succeeded; 2: backup failed; 9: no backup</li>
<li>LastBackupTimeBegin - String - required: no - start of the last backup time</li>
<li>LastBackupTimeEnd - String - required: no - end of the last backup time</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, support CreateTime, LastBackupTime, BackupCount.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ExportAssetCoreModuleList request structure.
 * @class
 */
class ExportAssetCoreModuleListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name- string - required: no - package name</li>
<li>User- string - required: no - username</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting criteria [FirstTime|Size|ProcessCount|ModuleCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeComponentStatistics response structure.
 * @class
 */
class DescribeComponentStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records in the component statistics list
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Array of list of counted components
         * @type {Array.<ComponentStatistics> || null}
         */
        this.ComponentStatistics = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ComponentStatistics) {
            this.ComponentStatistics = new Array();
            for (let z in params.ComponentStatistics) {
                let obj = new ComponentStatistics();
                obj.deserialize(params.ComponentStatistics[z]);
                this.ComponentStatistics.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyNetAttackWhiteList response structure.
 * @class
 */
class ModifyNetAttackWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineRegions request structure.
 * @class
 */
class DescribeMachineRegionsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAttackLogs request structure.
 * @class
 */
class DescribeAttackLogsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>HttpMethod - String - required: no - attack method (POST|GET)</li>
<li>DateRange - String - required: no - timeframe (store data from the past 3 months), such as the last month ["2019-11-17", "2019-12-17"]</li>
<li>VulType - String threat type - required: no</li>
<li>SrcIp - String attack source IP - required: no</li>
<li>DstIp - String attack target IP - required: no</li>
<li>SrcPort - String attack source port - required: no</li>
<li>DstPort - String attack target port - required: no</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * CWPP client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * CVM machine ID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * ModifyMachineAutoClearConfig request structure.
 * @class
 */
class ModifyMachineAutoClearConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Clean-up rule time, 0 for OFF, in days, up to 30 days
         * @type {number || null}
         */
        this.ClearRule = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ClearRule = 'ClearRule' in params ? params.ClearRule : null;

    }
}

/**
 * ModifyEventAttackStatus request structure.
 * @class
 */
class ModifyEventAttackStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * An array of event IDs that need to be modified, and batch operation is supported.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Whether to update all, i.e. whether to operate on all events; this parameter is invalid when IDs are not left blank.
         * @type {boolean || null}
         */
        this.All = null;

        /**
         * 0: Pending 1: Processed 2: Allowlisted 3: Ignored 4: Deleted 
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Filter criteria
<li>Type: String attack status: 0: attempted attack; 1: attack succeeded: required: no</li>
<li>Status: String event processing status: 0: pending 1: processed; 2: allowlisted; 3: ignored; 4: deleted: required: no</li>
<li>SrcIP - String source IP - required: no</li>
<li>DstPort - String attack target port - required: no</li>
<li>MachineName - String host name - required: no</li>
<li>InstanceID - String host instance ID - required: no</li>
<li>Quuids - String host CVM UUID - required: no</li>

         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Excluded IDs
         * @type {Array.<number> || null}
         */
        this.ExcludeId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.All = 'All' in params ? params.All : null;
        this.Status = 'Status' in params ? params.Status : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ExcludeId = 'ExcludeId' in params ? params.ExcludeId : null;

    }
}

/**
 * DescribeVulLevelCount response structure.
 * @class
 */
class DescribeVulLevelCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistical result
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulLevelInfo> || null}
         */
        this.VulLevelList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VulLevelList) {
            this.VulLevelList = new Array();
            for (let z in params.VulLevelList) {
                let obj = new VulLevelInfo();
                obj.deserialize(params.VulLevelList[z]);
                this.VulLevelList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Standard blocking mode rule
 * @class
 */
class BruteAttackRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Timeframe of the brute force event (unit: second)
         * @type {number || null}
         */
        this.TimeRange = null;

        /**
         * Number of failed attempts during the brute force event
         * @type {number || null}
         */
        this.LoginFailTimes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TimeRange = 'TimeRange' in params ? params.TimeRange : null;
        this.LoginFailTimes = 'LoginFailTimes' in params ? params.LoginFailTimes : null;

    }
}

/**
 * DescribeVersionStatistics response structure.
 * @class
 */
class DescribeVersionStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of Basic editions
         * @type {number || null}
         */
        this.BasicVersionNum = null;

        /**
         * Number of Professional editions
         * @type {number || null}
         */
        this.ProVersionNum = null;

        /**
         * Number of Ultimate editions
         * @type {number || null}
         */
        this.UltimateVersionNum = null;

        /**
         * Number of General Discount Editions
         * @type {number || null}
         */
        this.GeneralVersionNum = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BasicVersionNum = 'BasicVersionNum' in params ? params.BasicVersionNum : null;
        this.ProVersionNum = 'ProVersionNum' in params ? params.ProVersionNum : null;
        this.UltimateVersionNum = 'UltimateVersionNum' in params ? params.UltimateVersionNum : null;
        this.GeneralVersionNum = 'GeneralVersionNum' in params ? params.GeneralVersionNum : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAvailableExpertServiceDetail request structure.
 * @class
 */
class DescribeAvailableExpertServiceDetailRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMachineFileTamperRules response structure.
 * @class
 */
class DescribeMachineFileTamperRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Query Details of Host-related Core File Monitoring Rules
         * @type {Array.<MachineFileTamperRule> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MachineFileTamperRule();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteLogExport request structure.
 * @class
 */
class DeleteLogExportRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID of exported logs
         * @type {string || null}
         */
        this.ExportId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExportId = 'ExportId' in params ? params.ExportId : null;

    }
}

/**
 * DescribeUsualLoginPlaces response structure.
 * @class
 */
class DescribeUsualLoginPlacesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Array of frequently used log-in locations
         * @type {Array.<UsualPlace> || null}
         */
        this.UsualLoginPlaces = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.UsualLoginPlaces) {
            this.UsualLoginPlaces = new Array();
            for (let z in params.UsualLoginPlaces) {
                let obj = new UsualPlace();
                obj.deserialize(params.UsualLoginPlaces[z]);
                this.UsualLoginPlaces.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackEvents request structure.
 * @class
 */
class DescribeAttackEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         *  Filter criteria
<li>Type - String attack status. 0: attempted attack; 1: attack succeeded - required: no</li>
<li>Status - String event processing status: 0: pending 1: processed; 2: allowlisted; 3: ignored; 4: deleted - required: no</li>
<li>SrcIP - String source IP - required: no</li>
<li>Uuids - String CWPP UUID - required: no</li>
<li>Quuids - String CVM UUID - required: no</li>
<li>DstPort - String attack target port - required: no</li>
<li>MachineName - String host name - required: no</li>
<li>InstanceID - String host instance ID - required: no</li>
<li>AttackTimeBegin - String attack start time - required: no</li>
<li>AttackTimeEnd - String attack end time - required: no</li>
<li>VulSupportDefense - String: whether the vulnerability can be defended: 0: no;1: yes - required: no</li>

         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sort
         * @type {string || null}
         */
        this.By = null;

        /**
         * Sorting method: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.By = 'By' in params ? params.By : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * DescribeRiskDnsList request structure.
 * @class
 */
class DescribeRiskDnsListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>Url - String - required: no - filter by URL</li>
<li>Status - String - required: no - filter by status: 0: pending; 2: trusted; 3: untrusted</li>
<li>MergeBeginTime - String - required: no - start time of the last access</li>
<li>MergeEndTime - String - required: no - end time of the last access</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: sort by number of requests: asc - ascending order/desc - descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: AccessCount - number of requests; LastTime - last request time
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * CreateWhiteListOrder request structure.
 * @class
 */
class CreateWhiteListOrderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Number of authorizations (The minimum value is 1, and the maximum value is 99999.)
         * @type {number || null}
         */
        this.LicenseNum = null;

        /**
         * Expiration time (The minimum value is 1.)
         * @type {number || null}
         */
        this.Deadline = null;

        /**
         * Rule name, big asset center: asset_center
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Order type. 1: trial; 2: free; 3: experience; 4: free SSL certificate gift; 5: free CVM
         * @type {number || null}
         */
        this.SourceType = null;

        /**
         * Region: 1 Guangzhou; 9 Singapore. The default is 1. Do not select 9 unless necessary.
         * @type {number || null}
         */
        this.RegionId = null;

        /**
         * Additional parameters; JSON string, including ResourceId and LicenseType.
         * @type {string || null}
         */
        this.ExtraParam = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.LicenseNum = 'LicenseNum' in params ? params.LicenseNum : null;
        this.Deadline = 'Deadline' in params ? params.Deadline : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;
        this.RegionId = 'RegionId' in params ? params.RegionId : null;
        this.ExtraParam = 'ExtraParam' in params ? params.ExtraParam : null;

    }
}

/**
 * DescribeBaselineBasicInfo response structure.
 * @class
 */
class DescribeBaselineBasicInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline basic information list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineBasicInfo> || null}
         */
        this.BaselineBasicInfoList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BaselineBasicInfoList) {
            this.BaselineBasicInfoList = new Array();
            for (let z in params.BaselineBasicInfoList) {
                let obj = new BaselineBasicInfo();
                obj.deserialize(params.BaselineBasicInfoList[z]);
                this.BaselineBasicInfoList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseStrategyDetail response structure.
 * @class
 */
class DescribeRansomDefenseStrategyDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RansomDefenseStrategyDetail || null}
         */
        this.Strategy = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Strategy) {
            let obj = new RansomDefenseStrategyDetail();
            obj.deserialize(params.Strategy)
            this.Strategy = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * EditBashRules response structure.
 * @class
 */
class EditBashRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBruteAttackRules response structure.
 * @class
 */
class ModifyBruteAttackRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseBackupList request structure.
 * @class
 */
class DescribeRansomDefenseBackupListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum quantity is 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Status - Int - required: no - query by ransom status: 0: not ransomed; 1: ransomed</li>
<li>CreateTimeBegin - string - required: no - start of creation time</li>
<li>CreateTimeEnd - string - required: no - end of creation time</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field, supporting CreateTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyFileTamperRuleStatus request structure.
 * @class
 */
class ModifyFileTamperRuleStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: enable; 1: disable; 2: delete
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Corresponding event ID
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Whether a system rule: 0: system rule; 1: user defined rule. System rule Status cannot be deleted.
         * @type {number || null}
         */
        this.RuleCategory = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;

    }
}

/**
 * ScanVul response structure.
 * @class
 */
class ScanVulResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteNonlocalLoginPlaces request structure.
 * @class
 */
class DeleteNonlocalLoginPlacesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Method for deleting cross-region log-in events, available values are Ids, Ip, and All. The default is Ids.
         * @type {string || null}
         */
        this.DelType = null;

        /**
         * Array of cross-region log-in event IDs. Required if DelType is Ids or DelType is not filled.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * IP of cross-region log-in event. Required if DelType is Ip.
         * @type {Array.<string> || null}
         */
        this.Ip = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DelType = 'DelType' in params ? params.DelType : null;
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DeleteMalwareWhiteList response structure.
 * @class
 */
class DeleteMalwareWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeOverviewStatistics request structure.
 * @class
 */
class DescribeOverviewStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DeleteScanTask request structure.
 * @class
 */
class DeleteScanTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Module type. Malware (Trojan), Vul (vulnerability), and Baseline are currently available.
         * @type {string || null}
         */
        this.ModuleType = null;

        /**
         * Effective for selected servers; a string array of host QUUIDs
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;

    }
}

/**
 * DescribeRiskBatchStatus response structure.
 * @class
 */
class DescribeRiskBatchStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Handling: deletion operation in progress
Pending: no tasks are being executed
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAlarmIncidentNodes request structure.
 * @class
 */
class DescribeAlarmIncidentNodesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Alarm VID
         * @type {string || null}
         */
        this.AlarmVid = null;

        /**
         * Alarm time
         * @type {number || null}
         */
        this.AlarmTime = null;

        /**
         * Alarm source table ID
         * @type {number || null}
         */
        this.TableId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.AlarmVid = 'AlarmVid' in params ? params.AlarmVid : null;
        this.AlarmTime = 'AlarmTime' in params ? params.AlarmTime : null;
        this.TableId = 'TableId' in params ? params.TableId : null;

    }
}

/**
 * DescribeAssetWebAppPluginList request structure.
 * @class
 */
class DescribeAssetWebAppPluginListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Web application ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DescribeRansomDefenseMachineList response structure.
 * @class
 */
class DescribeRansomDefenseMachineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseStrategyMachineBackupInfo> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseStrategyMachineBackupInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeTagMachines request structure.
 * @class
 */
class DescribeTagMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeScreenAttackHotspot request structure.
 * @class
 */
class DescribeScreenAttackHotspotRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ScanVulAgain request structure.
 * @class
 */
class ScanVulAgainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability event ID string (Multiple entries are separated by English commas.)
         * @type {string || null}
         */
        this.EventIds = null;

        /**
         * Recheck machine UUID (Multiple entries are separated by commas.)
         * @type {string || null}
         */
        this.Uuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventIds = 'EventIds' in params ? params.EventIds : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;

    }
}

/**
 * DeleteSearchTemplate request structure.
 * @class
 */
class DeleteSearchTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ExportJavaMemShellPlugins response structure.
 * @class
 */
class ExportJavaMemShellPluginsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetTotalCount response structure.
 * @class
 */
class DescribeAssetTotalCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual resources
system: resource monitoring
account: account
port: port
process: process
app: application software
database: database
webapp: Web application
webframe: Web framework
webservice: Web service
weblocation: Web site
jar: Jar package
initservice: startup service
planTask: scheduled task
env: environment variable
coremodule: kernel module
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Types = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Types) {
            this.Types = new Array();
            for (let z in params.Types) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Types[z]);
                this.Types.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportNonlocalLoginPlaces request structure.
 * @class
 */
class ExportNonlocalLoginPlacesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>Status - int - required: no - filter by status: 1: normal log-in; 2: cross-region log-in</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeTags response structure.
 * @class
 */
class DescribeTagsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List information
         * @type {Array.<Tag> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Tag();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseTrend request structure.
 * @class
 */
class DescribeRansomDefenseTrendRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLicenseList response structure.
 * @class
 */
class DescribeLicenseListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Authorization quantity list information
         * @type {Array.<LicenseDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new LicenseDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeJavaMemShellList response structure.
 * @class
 */
class DescribeJavaMemShellListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<JavaMemShellInfo> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new JavaMemShellInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulOverview request structure.
 * @class
 */
class DescribeVulOverviewRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMachinesSimple response structure.
 * @class
 */
class DescribeMachinesSimpleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host list
         * @type {Array.<MachineSimple> || null}
         */
        this.Machines = null;

        /**
         * Number of Hosts
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new MachineSimple();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeNetAttackSetting request structure.
 * @class
 */
class DescribeNetAttackSettingRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Log-in audit list entity
 * @class
 */
class HostLoginList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Record ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * UUID string
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host IP
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Username
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Source IP
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * 1: normal log-in; 2: cross-region log-in; 5: allowlisted; 14: processed; 15: ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Country/Region ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Country = null;

        /**
         * City ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.City = null;

        /**
         * Province ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Province = null;

        /**
         * Log-in time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LoginTime = null;

        /**
         * Modification time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Whether hit the exception of cross-region log-in: 1: yes; 0: no
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsRiskArea = null;

        /**
         * Whether hit the exception of abnormal user: 1: yes; 0: no
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsRiskUser = null;

        /**
         * Whether hit the exception of abnormal time: 1: yes; 0: no
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsRiskTime = null;

        /**
         * Whether hit the exception of abnormal IP: 1: yes; 0: no
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsRiskSrcIp = null;

        /**
         * Risk level:
0: high
1: suspicious
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RiskLevel = null;

        /**
         * Location name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Location = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * High-risk information description:
ABROAD - overseas IP
XTI - threat intelligence
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Request destination port
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Port = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Country = 'Country' in params ? params.Country : null;
        this.City = 'City' in params ? params.City : null;
        this.Province = 'Province' in params ? params.Province : null;
        this.LoginTime = 'LoginTime' in params ? params.LoginTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.IsRiskArea = 'IsRiskArea' in params ? params.IsRiskArea : null;
        this.IsRiskUser = 'IsRiskUser' in params ? params.IsRiskUser : null;
        this.IsRiskTime = 'IsRiskTime' in params ? params.IsRiskTime : null;
        this.IsRiskSrcIp = 'IsRiskSrcIp' in params ? params.IsRiskSrcIp : null;
        this.RiskLevel = 'RiskLevel' in params ? params.RiskLevel : null;
        this.Location = 'Location' in params ? params.Location : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Desc = 'Desc' in params ? params.Desc : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Port = 'Port' in params ? params.Port : null;

    }
}

/**
 * DescribeScreenRiskAssetsTop request structure.
 * @class
 */
class DescribeScreenRiskAssetsTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistics type: 0: potential threat; 1: compromised; 2: vulnerability; 3: baseline
         * @type {number || null}
         */
        this.BusinessType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BusinessType = 'BusinessType' in params ? params.BusinessType : null;

    }
}

/**
 * DeletePrivilegeEvents request structure.
 * @class
 */
class DeletePrivilegeEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum number being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Basic information on the server list in asset fingerprint
 * @class
 */
class AssetMachineDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Private IP address of server
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system name
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * CPU information
         * @type {string || null}
         */
        this.Cpu = null;

        /**
         * Memory capacity, in GB
         * @type {number || null}
         */
        this.MemSize = null;

        /**
         * Memory utilization, in percentage
         * @type {string || null}
         */
        this.MemLoad = null;

        /**
         * Hard disk capacity, in GB
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * Hard disk usage, in percentage
         * @type {string || null}
         */
        this.DiskLoad = null;

        /**
         * Number of partitions
         * @type {number || null}
         */
        this.PartitionCount = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Number of CPU
         * @type {number || null}
         */
        this.CpuSize = null;

        /**
         * CPU load
         * @type {string || null}
         */
        this.CpuLoad = null;

        /**
         * Protection Level. 0 Basic Edition; 1 Professional Edition; 2 Premium Edition; 3 General Discount Edition
         * @type {number || null}
         */
        this.ProtectLevel = null;

        /**
         * Risk status: UNKNOW - unknown; RISK - risky; SAFT - Safe
         * @type {string || null}
         */
        this.RiskStatus = null;

        /**
         * Days protected
         * @type {number || null}
         */
        this.ProtectDays = null;

        /**
         * Professional edition activation time
         * @type {string || null}
         */
        this.BuyTime = null;

        /**
         * Professional edition expiration time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Kernel version
         * @type {string || null}
         */
        this.CoreVersion = null;

        /**
         * linux/windows
         * @type {string || null}
         */
        this.OsType = null;

        /**
         * Agent version
         * @type {string || null}
         */
        this.AgentVersion = null;

        /**
         * Installation time
         * @type {string || null}
         */
        this.InstallTime = null;

        /**
         * System startup time
         * @type {string || null}
         */
        this.BootTime = null;

        /**
         * Last online time
         * @type {string || null}
         */
        this.LastLiveTime = null;

        /**
         * Manufacturer
         * @type {string || null}
         */
        this.Producer = null;

        /**
         * Serial number
         * @type {string || null}
         */
        this.SerialNumber = null;

        /**
         * Network interface

         * @type {Array.<AssetNetworkCardInfo> || null}
         */
        this.NetCards = null;

        /**
         * Partition
         * @type {Array.<AssetDiskPartitionInfo> || null}
         */
        this.Disks = null;

        /**
         * 0: online; 1: offline
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Server model
         * @type {string || null}
         */
        this.DeviceVersion = null;

        /**
         * Offline time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.OfflineTime = null;

        /**
         * Host ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * CpuLoadVul
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CpuLoadVul = null;

        /**
         * Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Cpu = 'Cpu' in params ? params.Cpu : null;
        this.MemSize = 'MemSize' in params ? params.MemSize : null;
        this.MemLoad = 'MemLoad' in params ? params.MemLoad : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.DiskLoad = 'DiskLoad' in params ? params.DiskLoad : null;
        this.PartitionCount = 'PartitionCount' in params ? params.PartitionCount : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.CpuSize = 'CpuSize' in params ? params.CpuSize : null;
        this.CpuLoad = 'CpuLoad' in params ? params.CpuLoad : null;
        this.ProtectLevel = 'ProtectLevel' in params ? params.ProtectLevel : null;
        this.RiskStatus = 'RiskStatus' in params ? params.RiskStatus : null;
        this.ProtectDays = 'ProtectDays' in params ? params.ProtectDays : null;
        this.BuyTime = 'BuyTime' in params ? params.BuyTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CoreVersion = 'CoreVersion' in params ? params.CoreVersion : null;
        this.OsType = 'OsType' in params ? params.OsType : null;
        this.AgentVersion = 'AgentVersion' in params ? params.AgentVersion : null;
        this.InstallTime = 'InstallTime' in params ? params.InstallTime : null;
        this.BootTime = 'BootTime' in params ? params.BootTime : null;
        this.LastLiveTime = 'LastLiveTime' in params ? params.LastLiveTime : null;
        this.Producer = 'Producer' in params ? params.Producer : null;
        this.SerialNumber = 'SerialNumber' in params ? params.SerialNumber : null;

        if (params.NetCards) {
            this.NetCards = new Array();
            for (let z in params.NetCards) {
                let obj = new AssetNetworkCardInfo();
                obj.deserialize(params.NetCards[z]);
                this.NetCards.push(obj);
            }
        }

        if (params.Disks) {
            this.Disks = new Array();
            for (let z in params.Disks) {
                let obj = new AssetDiskPartitionInfo();
                obj.deserialize(params.Disks[z]);
                this.Disks.push(obj);
            }
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.DeviceVersion = 'DeviceVersion' in params ? params.DeviceVersion : null;
        this.OfflineTime = 'OfflineTime' in params ? params.OfflineTime : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.CpuLoadVul = 'CpuLoadVul' in params ? params.CpuLoadVul : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;

    }
}

/**
 * ModifyNetAttackWhiteList request structure.
 * @class
 */
class ModifyNetAttackWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether applies all hosts: 0: no; 1: yes
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Source IP. Single IP: 1.1.1.1, IP Range: 1.1.1.1-1.1.2.1, IP Range: 1.1.1.0/24 
         * @type {Array.<string> || null}
         */
        this.SrcIp = null;

        /**
         * Whether to allowlist all alarms that match this rule: 1: Yes, 0: No.
         * @type {number || null}
         */
        this.DealOldEvents = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * QUUID list
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Rule description
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * DescribeVulDefenceSetting request structure.
 * @class
 */
class DescribeVulDefenceSettingRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeTrialReport request structure.
 * @class
 */
class DescribeTrialReportRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Information of hosts affected by ignoring detection items
 * @class
 */
class IgnoreRuleEffectHostInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Severity level: 1: low-risk; 2: medium-risk; 3: high-risk; 4: critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Host tag array
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.TagList = null;

        /**
         * Status: 0: failed; 1: ignore; 3: passed; 5: detecting
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Last check time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastScanTime = null;

        /**
         * Event ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.TagList = 'TagList' in params ? params.TagList : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.LastScanTime = 'LastScanTime' in params ? params.LastScanTime : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * DescribeFileTamperEvents request structure.
 * @class
 */
class DescribeFileTamperEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Status - String - required: no - processing status: 0: pending; 1: allowlisted; 2: deleted; 3: ignored</li>
<li>ModifyTime - String - required: no - last occurrence time</li>
<li>Uuid- String - required: no - query by host UUID</li>
<li>RuleCategory - string - required: no - rule category. 0: system rule; 1: custom rule</li>
<li>FileAction - string - required: no - threat behavior: read - read file; write - write file</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: CreateTime; ModifyTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeScreenMachineRegions response structure.
 * @class
 */
class DescribeScreenMachineRegionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenRegionInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ScreenRegionInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulDefencePluginEvent response structure.
 * @class
 */
class ExportVulDefencePluginEventResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export file ID, which is downloadable via the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetMachineDetail request structure.
 * @class
 */
class ExportAssetMachineDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeBanMode request structure.
 * @class
 */
class DescribeBanModeRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * StopAssetScan request structure.
 * @class
 */
class StopAssetScanRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * DescribeSecurityEventStat request structure.
 * @class
 */
class DescribeSecurityEventStatRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * This API has no filtering criteria.
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeESAggregations response structure.
 * @class
 */
class DescribeESAggregationsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * ES aggregation result JSON
         * @type {string || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Data = 'Data' in params ? params.Data : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulInfo response structure.
 * @class
 */
class ExportVulInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export task ID, which is downloadable via the ExportTasks API.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Emergency vulnerability information
 * @class
 */
class EmergencyVul extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability level
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Release date
         * @type {string || null}
         */
        this.PublishDate = null;

        /**
         * Vulnerability category
         * @type {number || null}
         */
        this.Category = null;

        /**
         * Vulnerability status. 0: not detected; 1: at risk; 2: not at risk; 3: show progress during check
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Last scan time
         * @type {string || null}
         */
        this.LastScanTime = null;

        /**
         * Scan progress
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * CVE ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * CVSS score
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CvssScore = null;

        /**
         * Vulnerability Tags, Separated by Multiple Commas
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Labels = null;

        /**
         * Number of affected machines
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Whether to support defense: 0: no; 1: yes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsSupportDefense = null;

        /**
         * Number of Attacks Defended
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DefenseAttackCount = null;

        /**
         * Detection rule: 0: version comparison; 1: POC verification
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Method = null;

        /**
         * Attack intensity level
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackLevel = null;

        /**
         * Whether vulnerability defense is enabled on hosts with vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.DefenseState = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.PublishDate = 'PublishDate' in params ? params.PublishDate : null;
        this.Category = 'Category' in params ? params.Category : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.LastScanTime = 'LastScanTime' in params ? params.LastScanTime : null;
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.CvssScore = 'CvssScore' in params ? params.CvssScore : null;
        this.Labels = 'Labels' in params ? params.Labels : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.IsSupportDefense = 'IsSupportDefense' in params ? params.IsSupportDefense : null;
        this.DefenseAttackCount = 'DefenseAttackCount' in params ? params.DefenseAttackCount : null;
        this.Method = 'Method' in params ? params.Method : null;
        this.AttackLevel = 'AttackLevel' in params ? params.AttackLevel : null;
        this.DefenseState = 'DefenseState' in params ? params.DefenseState : null;

    }
}

/**
 * ExportAssetRecentMachineInfo request structure.
 * @class
 */
class ExportAssetRecentMachineInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;

    }
}

/**
 * ExportReverseShellEvents request structure.
 * @class
 */
class ExportReverseShellEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * High-risk command data (new)
 * @class
 */
class BashEventNew extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Username for execution
         * @type {string || null}
         */
        this.User = null;

        /**
         * Platform type
         * @type {number || null}
         */
        this.Platform = null;

        /**
         * Execute commands
         * @type {string || null}
         */
        this.BashCmd = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Rule level: 1: high-risk 2: medium-risk; 3: low-risk
         * @type {number || null}
         */
        this.RuleLevel = null;

        /**
         * Processing status: 0: pending; 1: processed; 2: allowlisted; 3: ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * 0: bash log; 1: real-time monitoring (Leiting edition)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DetectBy = null;

        /**
         * Process ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * Process name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Exe = null;

        /**
         * Processing time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Rule category. 0: system rule; 1: user rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Automatically generated regular expression
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RegexBashCmd = null;

        /**
         * 0: normal; 1: Professional edition; 2: Ultimate edition
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MachineType = null;

        /**
         * Additional Information on Machine
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.User = 'User' in params ? params.User : null;
        this.Platform = 'Platform' in params ? params.Platform : null;
        this.BashCmd = 'BashCmd' in params ? params.BashCmd : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.RuleLevel = 'RuleLevel' in params ? params.RuleLevel : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.Exe = 'Exe' in params ? params.Exe : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.RegexBashCmd = 'RegexBashCmd' in params ? params.RegexBashCmd : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DeleteLoginWhiteList response structure.
 * @class
 */
class DeleteLoginWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVertexDetail response structure.
 * @class
 */
class DescribeVertexDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attribute information of specified point list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VertexDetail> || null}
         */
        this.VertexDetails = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VertexDetails) {
            this.VertexDetails = new Array();
            for (let z in params.VertexDetails) {
                let obj = new VertexDetail();
                obj.deserialize(params.VertexDetails[z]);
                this.VertexDetails.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteRiskDnsEvent response structure.
 * @class
 */
class DeleteRiskDnsEventResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackLogs response structure.
 * @class
 */
class DescribeAttackLogsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Log list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<DefendAttackLog> || null}
         */
        this.AttackLogs = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AttackLogs) {
            this.AttackLogs = new Array();
            for (let z in params.AttackLogs) {
                let obj = new DefendAttackLog();
                obj.deserialize(params.AttackLogs[z]);
                this.AttackLogs.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLoginWhiteRecord request structure.
 * @class
 */
class ModifyLoginWhiteRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlisted users (Multiple users are separated by commas.)
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Allowlisted dimension information recorded after the update
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Whether it applies to all servers: 0: no; 1: yes
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Allowlist ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Server list
         * @type {Array.<HostInfo> || null}
         */
        this.Hosts = null;

        /**
         * Region list
         * @type {Array.<Place> || null}
         */
        this.Places = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Id = 'Id' in params ? params.Id : null;

        if (params.Hosts) {
            this.Hosts = new Array();
            for (let z in params.Hosts) {
                let obj = new HostInfo();
                obj.deserialize(params.Hosts[z]);
                this.Hosts.push(obj);
            }
        }

        if (params.Places) {
            this.Places = new Array();
            for (let z in params.Places) {
                let obj = new Place();
                obj.deserialize(params.Places[z]);
                this.Places.push(obj);
            }
        }

    }
}

/**
 * ModifyRiskDnsPolicy response structure.
 * @class
 */
class ModifyRiskDnsPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanTaskDetails request structure.
 * @class
 */
class DescribeScanTaskDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Module type. Malware (Trojan), Vul (vulnerability), and Baseline are currently available.
         * @type {string || null}
         */
        this.ModuleType = null;

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * Product trial status query API Data output parameter
 * @class
 */
class ProductStatusInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Protection status. 1: unprotected; 2: protecting; 3: in trial; 4 expired
         * @type {number || null}
         */
        this.FWUserStatus = null;

        /**
         * Whether application for trial is available. True indicates yes.
         * @type {boolean || null}
         */
        this.CanApplyTrial = null;

        /**
         * Reason for unavailable trial (Leave it blank if the trial is available.)
         * @type {string || null}
         */
        this.CanNotApplyReason = null;

        /**
         * Last trial end time (Leave it blank if no trial record exists.)
         * @type {string || null}
         */
        this.LastTrialTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FWUserStatus = 'FWUserStatus' in params ? params.FWUserStatus : null;
        this.CanApplyTrial = 'CanApplyTrial' in params ? params.CanApplyTrial : null;
        this.CanNotApplyReason = 'CanNotApplyReason' in params ? params.CanNotApplyReason : null;
        this.LastTrialTime = 'LastTrialTime' in params ? params.LastTrialTime : null;

    }
}

/**
 * DeleteMalwares response structure.
 * @class
 */
class DeleteMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRiskDnsEventList response structure.
 * @class
 */
class ExportRiskDnsEventListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetInitServiceList request structure.
 * @class
 */
class DescribeAssetInitServiceListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name- string - required: no - package name</li>
<li>User- string - required: no - user</li>
<li>IsAutoRun - string - required: no - whether it starts at boot: 0: no; 1: yes</li>
<li>Status- string - required: no - default enabling status: 0: unenabled; 1: enabled (Linux only)</li>
<li>Type- string - required: no - type: type (Windows only)
1: Encoder
2: IE plugin
3: Network provider
4: Mirror hijacking
5: LSA provider
6:KnownDLLs
7: Start execution
8:WMI
9: Scheduled task
10: Winsock provider
11: Printing monitor
12: Resource manager
13: Driver service
14: Log-in </li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ScanVulAgain response structure.
 * @class
 */
class ScanVulAgainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookReceiverUsage request structure.
 * @class
 */
class DescribeWebHookReceiverUsageRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm recipient list
         * @type {Array.<WebHookReceiver> || null}
         */
        this.List = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new WebHookReceiver();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }

    }
}

/**
 * DescribeAssetUserKeyList request structure.
 * @class
 */
class DescribeAssetUserKeyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Account name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * The statistical entity representing top vulnerabilities
 * @class
 */
class VulTopInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulLevel = null;

        /**
         * Number of vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulCount = null;

        /**
         * Vulnerability ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.VulLevel = 'VulLevel' in params ? params.VulLevel : null;
        this.VulCount = 'VulCount' in params ? params.VulCount : null;
        this.VulId = 'VulId' in params ? params.VulId : null;

    }
}

/**
 * CKafka domain name information
 * @class
 */
class CKafkaRouteInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Routing ID
         * @type {number || null}
         */
        this.RouteID = null;

        /**
         * Domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Domain Port
         * @type {number || null}
         */
        this.DomainPort = null;

        /**
         * Virtual IP
         * @type {string || null}
         */
        this.Vip = null;

        /**
         * Virtual IP Type
         * @type {number || null}
         */
        this.VipType = null;

        /**
         * Access type
         * @type {number || null}
         */
        this.AccessType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RouteID = 'RouteID' in params ? params.RouteID : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.DomainPort = 'DomainPort' in params ? params.DomainPort : null;
        this.Vip = 'Vip' in params ? params.Vip : null;
        this.VipType = 'VipType' in params ? params.VipType : null;
        this.AccessType = 'AccessType' in params ? params.AccessType : null;

    }
}

/**
 * SeparateMalwares response structure.
 * @class
 */
class SeparateMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Successfully isolated arrays of IDs; if none, an empty array is returned.
         * @type {Array.<number> || null}
         */
        this.SuccessIds = null;

        /**
         * Unsuccessfully isolated arrays of IDs; if none, an empty array is returned.
         * @type {Array.<number> || null}
         */
        this.FailedIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SuccessIds = 'SuccessIds' in params ? params.SuccessIds : null;
        this.FailedIds = 'FailedIds' in params ? params.FailedIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeTags request structure.
 * @class
 */
class DescribeTagsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM type
<li>CVM: indicates Cloud Virtual Machine</li>
<li>BM: indicates Blackstone Physical Machine</li>
<li>ECM: indicates Edge Computing Server</li>
<li>LH: indicates Tencent Cloud Lighthouse</li>
<li>Other: indicates hybrid CVMs</li>
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Region where the machine is located, such as ap-guangzhou.
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - query by keywords (machine name/machine IP)</li>
<li>Status - String - required: no - client online status (OFFLINE: offline | ONLINE: online | UNINSTALLED: uninstalled | SHUTDOWN: shut down)</li>
<li>Version - String - required: no - current protection version (PRO_VERSION: Professional edition | BASIC_VERSION: Basic edition)</li>
<li>Risk - String - required: no - risky host (yes)</li>
<li>Os - String - required: no - operating system (DescribeMachineOsList API value)</li>
Each filtering criterion supports only one value; queries of multiple values with OR relationship are not supported.</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportAssetJarList response structure.
 * @class
 */
class ExportAssetJarListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulEffectHostList request structure.
 * @class
 */
class ExportVulEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Filter criteria
<li>AliasName - String - filter by host name</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeNetAttackWhiteList response structure.
 * @class
 */
class DescribeNetAttackWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Allowlist
         * @type {Array.<NetAttackWhiteRule> || null}
         */
        this.WhiteList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.WhiteList) {
            this.WhiteList = new Array();
            for (let z in params.WhiteList) {
                let obj = new NetAttackWhiteRule();
                obj.deserialize(params.WhiteList[z]);
                this.WhiteList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CheckBashPolicyParams request structure.
 * @class
 */
class CheckBashPolicyParamsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Verify content Name or Rule. (Use a comma to separate them if both need to be verified.)
         * @type {string || null}
         */
        this.CheckField = null;

        /**
         * Event ID needs to be submitted when allowlisting an event in the event list.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Name of rule to be entered
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The regular expression to be entered by the user: It must match command content corresponding to the submitted EventId.
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Rule ID passed during editing
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CheckField = 'CheckField' in params ? params.CheckField : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeStrategyExist request structure.
 * @class
 */
class DescribeStrategyExistRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;

    }
}

/**
 * DescribeSecurityDynamics request structure.
 * @class
 */
class DescribeSecurityDynamicsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * CheckBashRuleParams request structure.
 * @class
 */
class CheckBashRuleParamsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Verify content Name or Rule. (Use a comma to separate them if both need to be verified.)
         * @type {string || null}
         */
        this.CheckField = null;

        /**
         * Event ID needs to be submitted when allowlisting an event in the event list.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Name of rule to be entered
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The regular expression to be entered by the user: It must match command content corresponding to the submitted EventId.
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Rule ID passed during editing
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CheckField = 'CheckField' in params ? params.CheckField : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeRiskDnsEventInfo request structure.
 * @class
 */
class DescribeRiskDnsEventInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeIgnoreBaselineRule request structure.
 * @class
 */
class DescribeIgnoreBaselineRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum quantity is 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Detection item name
         * @type {string || null}
         */
        this.RuleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;

    }
}

/**
 * DescribeAssetTypeTop request structure.
 * @class
 */
class DescribeAssetTypeTopRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * CheckFileTamperRule response structure.
 * @class
 */
class CheckFileTamperRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0=verification passed; 1=rule name verification failed
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Verification information
         * @type {string || null}
         */
        this.ErrMsg = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.ErrMsg = 'ErrMsg' in params ? params.ErrMsg : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportNonlocalLoginPlaces response structure.
 * @class
 */
class ExportNonlocalLoginPlacesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteMaliciousRequestWhiteList request structure.
 * @class
 */
class DeleteMaliciousRequestWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist IDs (The maximum number is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeAssetJarList response structure.
 * @class
 */
class DescribeAssetJarListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetJarBaseInfo> || null}
         */
        this.Jars = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Jars) {
            this.Jars = new Array();
            for (let z in params.Jars) {
                let obj = new AssetJarBaseInfo();
                obj.deserialize(params.Jars[z]);
                this.Jars.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetProcessInfoList response structure.
 * @class
 */
class ExportAssetProcessInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportMaliciousRequests request structure.
 * @class
 */
class ExportMaliciousRequestsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DeleteNetAttackWhiteList response structure.
 * @class
 */
class DeleteNetAttackWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookPolicy response structure.
 * @class
 */
class DescribeWebHookPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WebHookPolicy> || null}
         */
        this.List = null;

        /**
         * Number of policy lists
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new WebHookPolicy();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Block allowlist rules
 * @class
 */
class BanWhiteList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist IDs
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Allowlist aliases
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Block source IP
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Time of modifying allowlists
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Time of creating allowlists
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Machine associated with the allowlist
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Whether the allowlist is global
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.IsGlobal = null;

        /**
         * Machine list associated with the allowlist
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * SetLocalStorageItem response structure.
 * @class
 */
class SetLocalStorageItemResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBashEventsNew request structure.
 * @class
 */
class ExportBashEventsNewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Asset management jar package details
 * @class
 */
class AssetJarDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type: 1: application; 2: system library; 3: Web service built-in library; 8: other
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Whether executable: 0: unknown; 1: yes; 2: no
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Reference process list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetAppProcessInfo> || null}
         */
        this.Process = null;

        /**
         * Jar package Md5
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetAppProcessInfo();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * ModifyFileTamperRule response structure.
 * @class
 */
class ModifyFileTamperRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * StartBaselineDetect response structure.
 * @class
 */
class StartBaselineDetectResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Scan task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Reverse Shell data details
 * @class
 */
class ReverseShellEventInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID primary key
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Yunjing UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Target IP
         * @type {string || null}
         */
        this.DstIp = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.FullPath = null;

        /**
         * Command details
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * User for execution
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * User group for execution
         * @type {string || null}
         */
        this.UserGroup = null;

        /**
         * Parent process name
         * @type {string || null}
         */
        this.ParentProcName = null;

        /**
         * Parent process user
         * @type {string || null}
         */
        this.ParentProcUser = null;

        /**
         * Parent process user group
         * @type {string || null}
         */
        this.ParentProcGroup = null;

        /**
         * Parent process path
         * @type {string || null}
         */
        this.ParentProcPath = null;

        /**
         * Processing status: 0: pending; 2: allowlisted; 3: processed; 4: ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Detection method
         * @type {number || null}
         */
        this.DetectBy = null;

        /**
         * Process tree json; pid: process ID; exe: file path; account: groups and users to which the process belongs; cmdline: execute commands; ssh_service: ssh service IP, ssh_source: log-in source
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Recommended solution
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Description
         * @type {string || null}
         */
        this.HarmDescribe = null;

        /**
         * Tag
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Reference link
         * @type {Array.<string> || null}
         */
        this.References = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host online status: OFFLINE; ONLINE
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Processing time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.DstIp = 'DstIp' in params ? params.DstIp : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.FullPath = 'FullPath' in params ? params.FullPath : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.UserGroup = 'UserGroup' in params ? params.UserGroup : null;
        this.ParentProcName = 'ParentProcName' in params ? params.ParentProcName : null;
        this.ParentProcUser = 'ParentProcUser' in params ? params.ParentProcUser : null;
        this.ParentProcGroup = 'ParentProcGroup' in params ? params.ParentProcGroup : null;
        this.ParentProcPath = 'ParentProcPath' in params ? params.ParentProcPath : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.HarmDescribe = 'HarmDescribe' in params ? params.HarmDescribe : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.References = 'References' in params ? params.References : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * ExportVulDetectionReport request structure.
 * @class
 */
class ExportVulDetectionReportRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability scan task ID (different from the task ID of the export detection report task ID in the output parameter)
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * ModifyWarningHostConfig request structure.
 * @class
 */
class ModifyWarningHostConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm type
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Alarm Host Range Type. 0: All Hosts; 1: By Project; 2: By Tencent Cloud Tag; 3: By Host Security Tag; 4: Custom Hosts
         * @type {number || null}
         */
        this.HostRange = null;

        /**
         * List of Project or Tag Names, empty for custom hosts
         * @type {Array.<string> || null}
         */
        this.ItemLabels = null;

        /**
         * Machine list
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * List of Project or Tag IDs, empty for custom hosts
         * @type {Array.<string> || null}
         */
        this.ItemLabelIds = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.ExcludedQuuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.HostRange = 'HostRange' in params ? params.HostRange : null;
        this.ItemLabels = 'ItemLabels' in params ? params.ItemLabels : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.ItemLabelIds = 'ItemLabelIds' in params ? params.ItemLabelIds : null;
        this.ExcludedQuuids = 'ExcludedQuuids' in params ? params.ExcludedQuuids : null;

    }
}

/**
 * ExportMalwares response structure.
 * @class
 */
class ExportMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanVulSetting request structure.
 * @class
 */
class DescribeScanVulSettingRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMalwareRiskWarning request structure.
 * @class
 */
class DescribeMalwareRiskWarningRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Key-value index configuration
 * @class
 */
class KeyValueInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether case-sensitive
         * @type {boolean || null}
         */
        this.CaseSensitive = null;

        /**
         * Information about the key-value pair to be indexed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<KeyValueArrayInfo> || null}
         */
        this.KeyValues = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CaseSensitive = 'CaseSensitive' in params ? params.CaseSensitive : null;

        if (params.KeyValues) {
            this.KeyValues = new Array();
            for (let z in params.KeyValues) {
                let obj = new KeyValueArrayInfo();
                obj.deserialize(params.KeyValues[z]);
                this.KeyValues.push(obj);
            }
        }

    }
}

/**
 * StartBaselineDetect request structure.
 * @class
 */
class StartBaselineDetectRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline detection parameter
         * @type {BaselineDetectParam || null}
         */
        this.Param = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Param) {
            let obj = new BaselineDetectParam();
            obj.deserialize(params.Param)
            this.Param = obj;
        }

    }
}

/**
 * DescribeVulStoreList request structure.
 * @class
 */
class DescribeVulStoreListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>VulName- string - required: no - vulnerability name</li>
<li>CveId- string - required: no - cveid</li>
<li>VulCategory- string - required: no - vulnerability category: 1: WEB-CMS vulnerabilities; 2: application vulnerabilities; 4: Linux software vulnerabilities; 5: Windows system vulnerabilities</li>
<li>Method- string - required: no - detection method: 0: version comparison; 1: POC detection</li>
<li>SupportDefense - string - required: no - whether the defense is supported: 0: no; 1: yes</li>
<li>FixSwitch - string - required: no - whether automatic fixing is supported: 0: no; 1: yes</li>

         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting columns: [PublishDate].
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * EditPrivilegeRules request structure.
 * @class
 */
class EditPrivilegeRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID (Leave it blank when adding rules.)
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID array
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Whether it is a S permission process
         * @type {number || null}
         */
        this.SMode = null;

        /**
         * Whether the rule is global (not global by default)
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * ID of the associated event when the user clicks Add to Allowlist on the event list and details page (leave this parameter blank for rule addition)
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.SMode = 'SMode' in params ? params.SMode : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DescribeAssetDiskList request structure.
 * @class
 */
class DescribeAssetDiskListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Attack hot spots across the entire network on the large screen
 * @class
 */
class ScreenAttackHotspot extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event name
         * @type {string || null}
         */
        this.EventName = null;

        /**
         * Attacker IP address
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Victim IP address
         * @type {string || null}
         */
        this.DstIp = null;

        /**
         * Region
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Time
         * @type {string || null}
         */
        this.CreatedTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventName = 'EventName' in params ? params.EventName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.DstIp = 'DstIp' in params ? params.DstIp : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;

    }
}

/**
 * DescribeClientException request structure.
 * @class
 */
class DescribeClientExceptionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Client Exception Type 1: Client Offline, 2: Client Uninstallation
         * @type {number || null}
         */
        this.ExceptionType = null;

        /**
         * Pagination offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Limit per Page, not 0, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Start time in the format of `2006-01-02 15:04:05`
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time in the format of `2006-01-02 15:04:05`
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExceptionType = 'ExceptionType' in params ? params.ExceptionType : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * DescribeAssetPlanTaskList response structure.
 * @class
 */
class DescribeAssetPlanTaskListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetPlanTask> || null}
         */
        this.Tasks = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Tasks) {
            this.Tasks = new Array();
            for (let z in params.Tasks) {
                let obj = new AssetPlanTask();
                obj.deserialize(params.Tasks[z]);
                this.Tasks.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineRule request structure.
 * @class
 */
class DescribeBaselineRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline ID
         * @type {number || null}
         */
        this.BaselineId = null;

        /**
         * Pagination limit, with the maximum value being 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Severity level
         * @type {Array.<number> || null}
         */
        this.Level = null;

        /**
         * Status
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BaselineId = 'BaselineId' in params ? params.BaselineId : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * ExportAssetPortInfoList request structure.
 * @class
 */
class ExportAssetPortInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Port - uint64 - required: no - port</li>
<li>Ip - String - required: no - bound IP address</li>
<li>ProcessName - String - required: no - process name</li>
<li>Pid - uint64 - required: no - PID</li>
<li>User - String - required: no - running user</li>
<li>Group - String - required: no - user group</li>
<li>Ppid - uint64 - required: no - PPID</li>
<li>Proto - string - required: no - tcp/udp or "" (empty string to filter unknown status)</li>
<li>OsType - uint64 - required: no - Windows/Linux</li>
<li>RunTimeStart - String - required: no - running start time</li>
<li>RunTimeEnd - String - required: no - running end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|StartTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeHistoryAccounts request structure.
 * @class
 */
class DescribeHistoryAccountsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Yunjing client UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Number of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Username - String - required: no - username</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeAssetMachineDetail request structure.
 * @class
 */
class DescribeAssetMachineDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * CancelIgnoreVul response structure.
 * @class
 */
class CancelIgnoreVulResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSecurityBroadcastInfo request structure.
 * @class
 */
class DescribeSecurityBroadcastInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Article ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * IgnoreImpactedHosts response structure.
 * @class
 */
class IgnoreImpactedHostsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeCanFixVulMachine request structure.
 * @class
 */
class DescribeCanFixVulMachineRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability IDs
         * @type {Array.<number> || null}
         */
        this.VulIds = null;

        /**
         * Hosts requiring fixing. This parameter has an AND relationship with VulIds.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulIds = 'VulIds' in params ? params.VulIds : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DescribeRansomDefenseStrategyMachines response structure.
 * @class
 */
class DescribeRansomDefenseStrategyMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseStrategyMachineDetail> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseStrategyMachineDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseEventsList response structure.
 * @class
 */
class ExportRansomDefenseEventsListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetMachineDetail response structure.
 * @class
 */
class DescribeAssetMachineDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host details
         * @type {AssetMachineDetail || null}
         */
        this.MachineDetail = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MachineDetail) {
            let obj = new AssetMachineDetail();
            obj.deserialize(params.MachineDetail)
            this.MachineDetail = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseStrategyList response structure.
 * @class
 */
class DescribeRansomDefenseStrategyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseStrategy> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseStrategy();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackTrends request structure.
 * @class
 */
class DescribeAttackTrendsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         *  Filter criteria
<li>BeginTime - String start time, default: last 7 days - required: no</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DeleteNetAttackWhiteList request structure.
 * @class
 */
class DeleteNetAttackWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum value being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Account change history data
 * @class
 */
class HistoryAccount extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP client UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Private IP address of the host
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * Account change type
<li>CREATE: account creation</li>
<li>MODIFY: account modification</li>
<li>DELETE: account deletion</li>
         * @type {string || null}
         */
        this.ModifyType = null;

        /**
         * Change time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Username = 'Username' in params ? params.Username : null;
        this.ModifyType = 'ModifyType' in params ? params.ModifyType : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * DescribeStrategyExist response structure.
 * @class
 */
class DescribeStrategyExistResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the policy exists. 1: yes; 0: no.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IfExist = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IfExist = 'IfExist' in params ? params.IfExist : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteReverseShellEvents request structure.
 * @class
 */
class DeleteReverseShellEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum value being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DeleteBashPolicies request structure.
 * @class
 */
class DeleteBashPoliciesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum value being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * ExportAssetAppList response structure.
 * @class
 */
class ExportAssetAppListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogType request structure.
 * @class
 */
class DescribeLogTypeRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeVulTop response structure.
 * @class
 */
class DescribeVulTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of top vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulTopInfo> || null}
         */
        this.VulTopList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VulTopList) {
            this.VulTopList = new Array();
            for (let z in params.VulTopList) {
                let obj = new VulTopInfo();
                obj.deserialize(params.VulTopList[z]);
                this.VulTopList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Scan status list
 * @class
 */
class TaskStatus extends  AbstractModel {
    constructor(){
        super();

        /**
         * Scanning (including initializing)
         * @type {string || null}
         */
        this.Scanning = null;

        /**
         * Scan terminated (including terminating)
         * @type {string || null}
         */
        this.Ok = null;

        /**
         * Scan failed
         * @type {string || null}
         */
        this.Fail = null;

        /**
         * Scan failed, with specific reason displayed: scan timeout, low client version, or client offline
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Stop = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Scanning = 'Scanning' in params ? params.Scanning : null;
        this.Ok = 'Ok' in params ? params.Ok : null;
        this.Fail = 'Fail' in params ? params.Fail : null;
        this.Stop = 'Stop' in params ? params.Stop : null;

    }
}

/**
 * DescribeMachineOsList response structure.
 * @class
 */
class DescribeMachineOsListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operating system list
         * @type {Array.<OsName> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new OsName();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebServiceProcessList response structure.
 * @class
 */
class DescribeAssetWebServiceProcessListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Process list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetAppProcessInfo> || null}
         */
        this.Process = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetAppProcessInfo();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ChangeStrategyEnableStatus response structure.
 * @class
 */
class ChangeStrategyEnableStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseStrategyList response structure.
 * @class
 */
class ExportRansomDefenseStrategyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * IgnoreImpactedHosts request structure.
 * @class
 */
class IgnoreImpactedHostsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID array
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * SearchLog request structure.
 * @class
 */
class SearchLogRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time for logs to be searched and analyzed, which is a Unix timestamp in milliseconds
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End time for logs to be searched and analyzed, which is a Unix timestamp in milliseconds
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Statement for search and analysis, with a maximum length of 12 KB
         * @type {string || null}
         */
        this.QueryString = null;

        /**
         * Number of raw logs returned for a single query. Maximum value: 1000. The Context parameter can be used to obtain subsequent logs.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Order for returning the raw logs. Valid values: asc (ascending), desc (descending). Default value: desc.
         * @type {string || null}
         */
        this.Sort = null;

        /**
         * Pass the Context value returned by the last API call to retrieve more subsequent logs. A total of up to 10,000 raw logs can be obtained, with a validity period of 1 hour.
         * @type {string || null}
         */
        this.Context = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.QueryString = 'QueryString' in params ? params.QueryString : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Sort = 'Sort' in params ? params.Sort : null;
        this.Context = 'Context' in params ? params.Context : null;

    }
}

/**
 * DescribeBaselineWeakPasswordList request structure.
 * @class
 */
class DescribeBaselineWeakPasswordListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>WeakPassword - string - required: no - weak password</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting order [ASC: ascending|DESC: descending]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column [CreateTime|ModifyTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Vulnerability details
 * @class
 */
class VulDefenceEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * CVE ID
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * Vulnerability event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * 0: Attack Attempt (WeDetect); 1: Successful Attack Attempt (WeDetect); 2: RASP Defense Event
         * @type {number || null}
         */
        this.EventType = null;

        /**
         * Attack source IP address
         * @type {string || null}
         */
        this.SourceIp = null;

        /**
         * City of the attack source IP address
         * @type {string || null}
         */
        this.City = null;

        /**
         * Attack source port
         * @type {Array.<number> || null}
         */
        this.SourcePort = null;

        /**
         * Event Creation Time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update Event Time
         * @type {string || null}
         */
        this.MergeTime = null;

        /**
         * Number of Occurrences
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Status. 0: Pending; 1: Defended; 2: Processed; 3: Ignored; 4: Deleted
         * @type {number || null}
         */
        this.Status = null;

        /**
         * 0: Pro Edition; 1: Ultimate Edition; 2: LH Inclusive Edition (for Lighthouse only); 3: CVM Inclusive Edition (for CVM only).
         * @type {number || null}
         */
        this.UpgradeType = null;

        /**
         * 0: do not support fixing; 1: support fixing.
         * @type {number || null}
         */
        this.FixType = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.SourceIp = 'SourceIp' in params ? params.SourceIp : null;
        this.City = 'City' in params ? params.City : null;
        this.SourcePort = 'SourcePort' in params ? params.SourcePort : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MergeTime = 'MergeTime' in params ? params.MergeTime : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.UpgradeType = 'UpgradeType' in params ? params.UpgradeType : null;
        this.FixType = 'FixType' in params ? params.FixType : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * ModifyFileTamperRule request structure.
 * @class
 */
class ModifyFileTamperRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Rule content
         * @type {Array.<FileTamperRule> || null}
         */
        this.Rules = null;

        /**
         * Whether the rule is global (not global by default). 0: no; 1: yes. If the value is 1, Uuids can be left blank.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Enabling status. 0: enabled; 1: disabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Rule ID. If this parameter is left blank or set to 0, the rule is to be added.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * UUID array of affected hosts
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Risk Level. 0: None; 1: High-Risk; 2: Medium-Risk; 3: Low-Risk
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Allowlisted processing type
<li>cur: add the current items to the allowlist</li>
<li>all: add all objects that meet the conditions to the allowlist</li>
         * @type {string || null}
         */
        this.AddWhiteType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

        if (params.Rules) {
            this.Rules = new Array();
            for (let z in params.Rules) {
                let obj = new FileTamperRule();
                obj.deserialize(params.Rules[z]);
                this.Rules.push(obj);
            }
        }
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.AddWhiteType = 'AddWhiteType' in params ? params.AddWhiteType : null;

    }
}

/**
 * ExportBaselineFixList request structure.
 * @class
 */
class ExportBaselineFixListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>ItemName - String - required: no - item name</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * 0: Filtered Result Export; 1: Export All
         * @type {number || null}
         */
        this.ExportAll = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ExportAll = 'ExportAll' in params ? params.ExportAll : null;

    }
}

/**
 * Basic information for resource management account 
 * @class
 */
class AssetUserDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Account UID
         * @type {string || null}
         */
        this.Uid = null;

        /**
         * Account GID
         * @type {string || null}
         */
        this.Gid = null;

        /**
         * Account status. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether there is root permission. 0: no; 1: yes; 999: null (Linux only).
         * @type {number || null}
         */
        this.IsRoot = null;

        /**
         * Last log-in time
         * @type {string || null}
         */
        this.LastLoginTime = null;

        /**
         * Account name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Account type. 0: guest user; 1: standard user; 2: administrator user; 999: null (Windows only).
         * @type {number || null}
         */
        this.UserType = null;

        /**
         * Whether the account is a domain account. 0: no; 1: yes; 999: null (Windows only).
         * @type {number || null}
         */
        this.IsDomain = null;

        /**
         * Whether SSH log-in allowed. 1: yes; 0: no; 999: null (Linux only).
         * @type {number || null}
         */
        this.IsSshLogin = null;

        /**
         * Home directory
         * @type {string || null}
         */
        this.HomePath = null;

        /**
         * Shell path (Linux only)
         * @type {string || null}
         */
        this.Shell = null;

        /**
         * Whether shell log-in allowed. 0: no; 1: yes (Linux only).
         * @type {number || null}
         */
        this.ShellLoginStatus = null;

        /**
         * Password modification time
         * @type {string || null}
         */
        this.PasswordChangeTime = null;

        /**
         * Password expiration time (Linux only)
         * @type {string || null}
         */
        this.PasswordDueTime = null;

        /**
         * Password locking time (unit: day). -1: never locked; 999: null (Linux only).
         * @type {number || null}
         */
        this.PasswordLockDays = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * User group name
         * @type {string || null}
         */
        this.GroupName = null;

        /**
         * Account expiration time
         * @type {string || null}
         */
        this.DisableTime = null;

        /**
         * Last log-in terminal
         * @type {string || null}
         */
        this.LastLoginTerminal = null;

        /**
         * Last log-in location
         * @type {string || null}
         */
        this.LastLoginLoc = null;

        /**
         * Last log-in IP address
         * @type {string || null}
         */
        this.LastLoginIp = null;

        /**
         * Password expiration reminder, in days
         * @type {number || null}
         */
        this.PasswordWarnDays = null;

        /**
         * Password change settings. 0: not allowed; 1: allowed.
         * @type {number || null}
         */
        this.PasswordChangeType = null;

        /**
         * User public key listNote: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetUserKeyInfo> || null}
         */
        this.Keys = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uid = 'Uid' in params ? params.Uid : null;
        this.Gid = 'Gid' in params ? params.Gid : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsRoot = 'IsRoot' in params ? params.IsRoot : null;
        this.LastLoginTime = 'LastLoginTime' in params ? params.LastLoginTime : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.UserType = 'UserType' in params ? params.UserType : null;
        this.IsDomain = 'IsDomain' in params ? params.IsDomain : null;
        this.IsSshLogin = 'IsSshLogin' in params ? params.IsSshLogin : null;
        this.HomePath = 'HomePath' in params ? params.HomePath : null;
        this.Shell = 'Shell' in params ? params.Shell : null;
        this.ShellLoginStatus = 'ShellLoginStatus' in params ? params.ShellLoginStatus : null;
        this.PasswordChangeTime = 'PasswordChangeTime' in params ? params.PasswordChangeTime : null;
        this.PasswordDueTime = 'PasswordDueTime' in params ? params.PasswordDueTime : null;
        this.PasswordLockDays = 'PasswordLockDays' in params ? params.PasswordLockDays : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.GroupName = 'GroupName' in params ? params.GroupName : null;
        this.DisableTime = 'DisableTime' in params ? params.DisableTime : null;
        this.LastLoginTerminal = 'LastLoginTerminal' in params ? params.LastLoginTerminal : null;
        this.LastLoginLoc = 'LastLoginLoc' in params ? params.LastLoginLoc : null;
        this.LastLoginIp = 'LastLoginIp' in params ? params.LastLoginIp : null;
        this.PasswordWarnDays = 'PasswordWarnDays' in params ? params.PasswordWarnDays : null;
        this.PasswordChangeType = 'PasswordChangeType' in params ? params.PasswordChangeType : null;

        if (params.Keys) {
            this.Keys = new Array();
            for (let z in params.Keys) {
                let obj = new AssetUserKeyInfo();
                obj.deserialize(params.Keys[z]);
                this.Keys.push(obj);
            }
        }
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * DescribeAssetPortCount request structure.
 * @class
 */
class DescribeAssetPortCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Return the data of specified port numbers.
         * @type {number || null}
         */
        this.Port = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Port = 'Port' in params ? params.Port : null;

    }
}

/**
 * ModifyWebHookPolicy response structure.
 * @class
 */
class ModifyWebHookPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeFileTamperEvents response structure.
 * @class
 */
class DescribeFileTamperEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Core File Event List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<FileTamperEvent> || null}
         */
        this.List = null;

        /**
         * Total number of data entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new FileTamperEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulLabels response structure.
 * @class
 */
class DescribeVulLabelsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag list
         * @type {Array.<string> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.List = 'List' in params ? params.List : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachines request structure.
 * @class
 */
class DescribeMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type of the machine's zone
CVM: Cloud Virtual Machine
BM: BMECM: Edge Computing Machine
LH: Lighthouse
Other: Hybrid Cloud Zone
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Machine region. For example, ap-guangzhou and ap-shanghai.
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Number of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Ips - String - required: no - query by IP</li>
<li>Names - String - required: no - query by instance name</li>
<li>InstanceIds - String - required: no - instance ID for query </li>
<li>Status - String - required: no - client online status (OFFLINE: offline/shut down | ONLINE: online | UNINSTALLED: not installed | AGENT_OFFLINE: agent offline | AGENT_SHUTDOWN: agent shut down)</li>
<li>Version - String required: no - current edition ( PRO_VERSION: Pro Edition | BASIC_VERSION: Basic Edition | Flagship: Ultimate Edition | ProtectedMachines: Pro + Ultimate Editions)</li>
<li>Risk - String - required: no - risky host (yes)</li>
<li>Os - String - required: no - operating system (value of DescribeMachineOsList)</li>
Each filter criterion supports only one value.
<li>Quuid - String - required: no - CVM instance UUID. Maximum value: 100.</li>
<li>AddedOnTheFifteen - String required: no - whether to query only hosts added within the last 15 days (1: yes) </li>
<li> TagId - String required: no - query the list of hosts associated with the specified tag </li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * ID List of Businesses to which machines belong
         * @type {Array.<number> || null}
         */
        this.ProjectIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ProjectIds = 'ProjectIds' in params ? params.ProjectIds : null;

    }
}

/**
 * DescribeRansomDefenseBackupList response structure.
 * @class
 */
class DescribeRansomDefenseBackupListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Backup list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseBackup> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseBackup();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulEffectHostList request structure.
 * @class
 */
class DescribeVulEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination limit, with the maximum value being 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Filter criteria:
<li>AliasName - String - host name for filtering</li>
<li>TagIds - String - array of host tag IDs separated by commas</li>
<li>Status - String - status: 0: pending; 1: ignored; 3: fixed; 5: detecting; 6: fixing; 8: fixing failed</li>
<li>Uuid - String array - UUID array</li>
<li>Version - String array - paid edition array: "Flagship": Ultimate Edition; "PRO_VERSION": Pro Edition; "BASIC_VERSION": Basic Edition</li>
<li>InstanceState - String array - instance status array: "PENDING": creating; "LAUNCH_FAILED": creation failed; "RUNNING": running; "STOPPED": shut down; "STARTING": starting; "STOPPING": shutting down; "REBOOTING": restarting; "SHUTDOWN": to be terminated; "TERMINATING": terminating; "UNKNOWN": unknown (for non-Tencent Cloud machines and offline client) </li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.VulId = 'VulId' in params ? params.VulId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Log shipping type details
 * @class
 */
class DeliverTypeDetails extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security module type. 1: intrusion detection; 2: vulnerability management; 3: baseline management; 4: advanced defense; 5: client security; 6: asset fingerprint; 7: host list; 8: client reporting.
         * @type {number || null}
         */
        this.SecurityType = null;

        /**
         * Type of logs of the security module
         * @type {Array.<number> || null}
         */
        this.LogType = null;

        /**
         * Topic ID
         * @type {string || null}
         */
        this.TopicId = null;

        /**
         * Topic name
         * @type {string || null}
         */
        this.TopicName = null;

        /**
         * Shipping enabling status. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.Switch = null;

        /**
         * Shipping status. 0: disabled; 1: normal; 2: abnormal.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Error message
         * @type {string || null}
         */
        this.ErrInfo = null;

        /**
         * Timestamp of last status reporting
         * @type {number || null}
         */
        this.StatusTime = null;

        /**
         * Logset name
         * @type {string || null}
         */
        this.LogName = null;

        /**
         * Logset ID
         * @type {string || null}
         */
        this.LogSetId = null;

        /**
         * Logset region
         * @type {string || null}
         */
        this.Region = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecurityType = 'SecurityType' in params ? params.SecurityType : null;
        this.LogType = 'LogType' in params ? params.LogType : null;
        this.TopicId = 'TopicId' in params ? params.TopicId : null;
        this.TopicName = 'TopicName' in params ? params.TopicName : null;
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrInfo = 'ErrInfo' in params ? params.ErrInfo : null;
        this.StatusTime = 'StatusTime' in params ? params.StatusTime : null;
        this.LogName = 'LogName' in params ? params.LogName : null;
        this.LogSetId = 'LogSetId' in params ? params.LogSetId : null;
        this.Region = 'Region' in params ? params.Region : null;

    }
}

/**
 * ModifyNetAttackSetting response structure.
 * @class
 */
class ModifyNetAttackSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of web application plugin for asset management
 * @class
 */
class AssetWebAppPluginInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Link
         * @type {string || null}
         */
        this.Link = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Link = 'Link' in params ? params.Link : null;

    }
}

/**
 * DeletePrivilegeRules request structure.
 * @class
 */
class DeletePrivilegeRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum value being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * List of scan task details
 * @class
 */
class ScanTaskDetails extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsName = null;

        /**
         * Number of risks
         * @type {number || null}
         */
        this.RiskNum = null;

        /**
         * Scan start time
         * @type {string || null}
         */
        this.ScanBeginTime = null;

        /**
         * Scan end time
         * @type {string || null}
         */
        this.ScanEndTime = null;

        /**
         * UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Status code
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Failure details
         * @type {number || null}
         */
        this.FailType = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.OsName = 'OsName' in params ? params.OsName : null;
        this.RiskNum = 'RiskNum' in params ? params.RiskNum : null;
        this.ScanBeginTime = 'ScanBeginTime' in params ? params.ScanBeginTime : null;
        this.ScanEndTime = 'ScanEndTime' in params ? params.ScanEndTime : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.FailType = 'FailType' in params ? params.FailType : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeLicenseBindSchedule response structure.
 * @class
 */
class DescribeLicenseBindScheduleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Progress
         * @type {number || null}
         */
        this.Schedule = null;

        /**
         * Bound Task Details
         * @type {Array.<LicenseBindTaskDetail> || null}
         */
        this.List = null;

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Schedule = 'Schedule' in params ? params.Schedule : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new LicenseBindTaskDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalwareInfo request structure.
 * @class
 */
class DescribeMalwareInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeVersionStatistics request structure.
 * @class
 */
class DescribeVersionStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLogType response structure.
 * @class
 */
class DescribeLogTypeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * CLS log type information
         * @type {string || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Data = 'Data' in params ? params.Data : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyRiskDnsPolicyStatus response structure.
 * @class
 */
class ModifyRiskDnsPolicyStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportPrivilegeEvents response structure.
 * @class
 */
class ExportPrivilegeEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetRecentMachineInfo response structure.
 * @class
 */
class ExportAssetRecentMachineInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download URL
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineRegionList request structure.
 * @class
 */
class DescribeMachineRegionListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Frequently used log-in location
 * @class
 */
class UsualPlace extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP client UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Country ID
         * @type {number || null}
         */
        this.CountryId = null;

        /**
         * Province ID
         * @type {number || null}
         */
        this.ProvinceId = null;

        /**
         * City ID
         * @type {number || null}
         */
        this.CityId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.CountryId = 'CountryId' in params ? params.CountryId : null;
        this.ProvinceId = 'ProvinceId' in params ? params.ProvinceId : null;
        this.CityId = 'CityId' in params ? params.CityId : null;

    }
}

/**
 * ModifyBaselinePolicy response structure.
 * @class
 */
class ModifyBaselinePolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Host List Shuttle Box
 * @class
 */
class MachineSimple extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name.
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host System.
         * @type {string || null}
         */
        this.MachineOs = null;

        /**
         * Yunjing client UUID. If the client is offline for a long time, an empty string is returned.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * CVM or BM Machine Unique UUID.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host IP.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Whether the edition is Pro Edition
<li>true: yes</li>
<li>false: no</li>
         * @type {boolean || null}
         */
        this.IsProVersion = null;

        /**
         * Public IP address of the host
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host status
<li>POSTPAY: postpaid, indicating pay-as-you-go mode </li>
<li>PREPAY: prepaid, indicating monthly subscription mode</li>
         * @type {string || null}
         */
        this.PayMode = null;

        /**
         * Tag information
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Region information
         * @type {RegionInfo || null}
         */
        this.RegionInfo = null;

        /**
         * Instance status. TERMINATED_PRO_VERSION: terminated.
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Project ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Machine Zone Type. CVM - Cloud Virtual Machine; BM: Bare Metal; ECM: Edge Computing Machine; LH: Lightweight Application Server; Other: Hybrid Cloud Zone
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Kernel version
         * @type {string || null}
         */
        this.KernelVersion = null;

        /**
         * Protection Edition. BASIC_VERSION: Basic Edition; PRO_VERSION: Professional Edition; Flagship: Premium Edition; GENERAL_DISCOUNT: General Discount Edition
         * @type {string || null}
         */
        this.ProtectType = null;

        /**
         * Authorization order object
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {LicenseOrder || null}
         */
        this.LicenseOrder = null;

        /**
         * Cloud Tag Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tags> || null}
         */
        this.CloudTags = null;

        /**
         * Instance ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineOs = 'MachineOs' in params ? params.MachineOs : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.IsProVersion = 'IsProVersion' in params ? params.IsProVersion : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.PayMode = 'PayMode' in params ? params.PayMode : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }

        if (params.RegionInfo) {
            let obj = new RegionInfo();
            obj.deserialize(params.RegionInfo)
            this.RegionInfo = obj;
        }
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.KernelVersion = 'KernelVersion' in params ? params.KernelVersion : null;
        this.ProtectType = 'ProtectType' in params ? params.ProtectType : null;

        if (params.LicenseOrder) {
            let obj = new LicenseOrder();
            obj.deserialize(params.LicenseOrder)
            this.LicenseOrder = obj;
        }

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tags();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;

    }
}

/**
 * DescribeReverseShellEvents request structure.
 * @class
 */
class DescribeReverseShellEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns, with the maximum value being 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - keyword (host's private IP address|process name)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: sort by number of requests. asc: ascending order; desc: descending order.
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field. CreateTime: occurrence time.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeCanNotSeparateMachine response structure.
 * @class
 */
class DescribeCanNotSeparateMachineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of non-isolatable hosts
         * @type {Array.<CanNotSeparateInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new CanNotSeparateInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetPortInfoList response structure.
 * @class
 */
class ExportAssetPortInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of core file monitoring rules
 * @class
 */
class FileTamperRuleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Rule Type. 0: System Rule; 1: User Rule
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Number of affected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Update time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Status. 0: Enabled; 1: Disabled
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Rule ID, which is set to 0 for system rules
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Whether global 0: no; 1: yes
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Risk Level. 0: None; 1: High-Risk; 2: Medium-Risk; 3: Low-Risk
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Number of write entries for the sub-rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.WriteRuleCount = null;

        /**
         * Number of read entries for the sub-rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ReadRuleCount = null;

        /**
         * Number of read and write entries for the sub-rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ReadWriteRuleCount = null;

        /**
         * Monitoring behavior
<li>read: read file</li>
<li>write: modify file</li>
<li>read-write: read and modify file</li>
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileAction = null;

        /**
         * Allowlisted processing type
<li>cur: add the current items to the allowlist</li>
<li>all: add all items that meet the conditions to the allowlist</li>
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AddWhiteType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.WriteRuleCount = 'WriteRuleCount' in params ? params.WriteRuleCount : null;
        this.ReadRuleCount = 'ReadRuleCount' in params ? params.ReadRuleCount : null;
        this.ReadWriteRuleCount = 'ReadWriteRuleCount' in params ? params.ReadWriteRuleCount : null;
        this.FileAction = 'FileAction' in params ? params.FileAction : null;
        this.AddWhiteType = 'AddWhiteType' in params ? params.AddWhiteType : null;

    }
}

/**
 * DescribeEventByTable response structure.
 * @class
 */
class DescribeEventByTableResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm type. Bruteattack: brute force cracking; bash: high-risk command; malware: malicious file; risk_dns: malicious request; privilege_escalation: local privilege escalation; reverse_shell: reverse shell; java_shell: Java webshell.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * JSON string of the event content. The field structure is the same as that of the event table.
         * @type {string || null}
         */
        this.Value = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLogStorageConfig request structure.
 * @class
 */
class ModifyLogStorageConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to modify the validity period
         * @type {boolean || null}
         */
        this.IsModifyPeriod = null;

        /**
         * Storage type: string array
         * @type {Array.<string> || null}
         */
        this.Type = null;

        /**
         * Log retention days. The value 3640 indicates that the number of days is unlimited.
         * @type {number || null}
         */
        this.Period = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsModifyPeriod = 'IsModifyPeriod' in params ? params.IsModifyPeriod : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Period = 'Period' in params ? params.Period : null;

    }
}

/**
 * DescribeAttackVulTypeList request structure.
 * @class
 */
class DescribeAttackVulTypeListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Asset management load information
 * @class
 */
class AssetLoadDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Load
         * @type {number || null}
         */
        this.Value = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeLogStorageStatistic request structure.
 * @class
 */
class DescribeLogStorageStatisticRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DeleteBaselinePolicy request structure.
 * @class
 */
class DeleteBaselinePolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {Array.<number> || null}
         */
        this.PolicyIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyIds = 'PolicyIds' in params ? params.PolicyIds : null;

    }
}

/**
 * SetLocalStorageExpire request structure.
 * @class
 */
class SetLocalStorageExpireRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key
         * @type {string || null}
         */
        this.Key = null;

        /**
         * Expiration time (unit: second)
         * @type {number || null}
         */
        this.Expire = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;
        this.Expire = 'Expire' in params ? params.Expire : null;

    }
}

/**
 * ExportAssetInitServiceList request structure.
 * @class
 */
class ExportAssetInitServiceListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name- string - required: no - package name</li>
<li>User- string - required: no - user</li>
<li>Status- string - required: no - default enabling status: 0 - unenabled; 1 - enabled (Linux only)</li>
<li>Type- string - required: no - type: type (Windows only)
1: Encoder
2: IE plugin
3: Network provider
4: Mirror hijacking
5: LSA provider
6:KnownDLLs
7: Start execution
8:WMI
9: Scheduled task
10: Winsock provider
11: Printing monitor
12: Resource manager
13: Driver service
14: Log-in </li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DeleteWebHookReceiver request structure.
 * @class
 */
class DeleteWebHookReceiverRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeAssetRecentMachineInfo request structure.
 * @class
 */
class DescribeAssetRecentMachineInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time. For example, 2020-09-22.
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End time. For example, 2020-09-22.
         * @type {string || null}
         */
        this.EndDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;

    }
}

/**
 * CheckBashRuleParams response structure.
 * @class
 */
class CheckBashRuleParamsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: verification passed; 1: rule name verification failed; 2: regular expression verification failed.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Verification information
         * @type {string || null}
         */
        this.ErrMsg = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.ErrMsg = 'ErrMsg' in params ? params.ErrMsg : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteLicenseRecord request structure.
 * @class
 */
class DeleteLicenseRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization ID, which can be obtained from the authorization order list
         * @type {number || null}
         */
        this.LicenseId = null;

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseId = 'LicenseId' in params ? params.LicenseId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

    }
}

/**
 * ExportBaselineList request structure.
 * @class
 */
class ExportBaselineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria:
<li>StrategyId- Uint64 - baseline policy ID</li>
<li>Status - Uint64 - event status: 0: failed; 1: ignored; 3: passed; 5: detecting</li>
<li>BaselineName - String - baseline name</li>
<li>AliasName - String - server name/server IP address</li>
<li>Uuid - String - host UUID</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * This parameter has been deprecated.
         * @type {number || null}
         */
        this.IfDetail = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.IfDetail = 'IfDetail' in params ? params.IfDetail : null;

    }
}

/**
 * DescribeAssetWebLocationPathList response structure.
 * @class
 */
class DescribeAssetWebLocationPathListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebLocationPath> || null}
         */
        this.Paths = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Paths) {
            this.Paths = new Array();
            for (let z in params.Paths) {
                let obj = new AssetWebLocationPath();
                obj.deserialize(params.Paths[z]);
                this.Paths.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Anti-Ransomware Host List
 * @class
 */
class RansomDefenseStrategyMachineDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Cloud tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tag> || null}
         */
        this.CloudTags = null;

        /**
         * Availability zone information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RegionInfo || null}
         */
        this.RegionInfo = null;

        /**
         * CWPP tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Protection status: 0 Disabled, 1 Enabled.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Policy ID. 0 indicates no binding to any policy.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Hard disk information, all hard disks take effect when left blank:
Separate diskId1|diskName1;diskId2|diskName2
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DiskInfo = null;

        /**
         * Edition information. 0: Basic Edition; 1: Pro Edition; 2: Ultimate Edition; 3: Inclusive Edition.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostVersion = null;

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StrategyName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tag();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }

        if (params.RegionInfo) {
            let obj = new RegionInfo();
            obj.deserialize(params.RegionInfo)
            this.RegionInfo = obj;
        }

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.DiskInfo = 'DiskInfo' in params ? params.DiskInfo : null;
        this.HostVersion = 'HostVersion' in params ? params.HostVersion : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;

    }
}

/**
 * ExportIgnoreBaselineRule response structure.
 * @class
 */
class ExportIgnoreBaselineRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of rules for determining brute force cracking
 * @class
 */
class BruteAttackRuleList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Timeframe of the brute force cracking event (unit: second)
         * @type {number || null}
         */
        this.TimeRange = null;

        /**
         * Number of failed attempts during the brute force cracking event
         * @type {number || null}
         */
        this.LoginFailTimes = null;

        /**
         * Whether the rule is empty. If yes, fill in the default rule.
         * @type {boolean || null}
         */
        this.Enable = null;

        /**
         * Occurrence time range of brute force cracking events, in seconds (default rule)
         * @type {number || null}
         */
        this.TimeRangeDefault = null;

        /**
         * Number of failed brute force cracking events (default rule)
         * @type {number || null}
         */
        this.LoginFailTimesDefault = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TimeRange = 'TimeRange' in params ? params.TimeRange : null;
        this.LoginFailTimes = 'LoginFailTimes' in params ? params.LoginFailTimes : null;
        this.Enable = 'Enable' in params ? params.Enable : null;
        this.TimeRangeDefault = 'TimeRangeDefault' in params ? params.TimeRangeDefault : null;
        this.LoginFailTimesDefault = 'LoginFailTimesDefault' in params ? params.LoginFailTimesDefault : null;

    }
}

/**
 * ExportFileTamperEvents response structure.
 * @class
 */
class ExportFileTamperEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The export task ID can be downloaded through the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBanStatus response structure.
 * @class
 */
class DescribeBanStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking enabling status:
0: disabled 
1: advanced blocking
2: basic blocking (block only malicious IP addresses in the intelligence database)
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether to display the pop-up prompt. False: no; true: yes.
         * @type {boolean || null}
         */
        this.ShowTips = null;

        /**
         * Whether to enable intelligent over-allowing mode
         * @type {boolean || null}
         */
        this.OpenSmartMode = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ShowTips = 'ShowTips' in params ? params.ShowTips : null;
        this.OpenSmartMode = 'OpenSmartMode' in params ? params.OpenSmartMode : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulList request structure.
 * @class
 */
class DescribeVulListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns, with the maximum value being 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Status - String - required: no - processing status: 0: pending; 1: allowlisted; 2: deleted; 3: ignored</li>
<li>ModifyTime - String - required: no - last occurrence time</li>
<li>Uuid- String - required: no - query by host UUID</li>
<li>VulName- string -</li>
<li>VulCategory- string - required: no - vulnerability category: 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability</li>
<li>IsSupportDefense - int - required: no - support for defense: 0: not supported; 1: supported</li>
<li>Labels - string - required: no - tag for search</li>
<li>IsSupportAutoFix - string - required: no - whether automatic fixing is supported: 0: not supported; 1: supported</li>
<li>CvssScore - string - required: no - lower limit of CVSS score</li>
<li>AttackLevel - string - required: no - lower limit of attack level</li>


         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting field: Level, LastTime, and HostCount
         * @type {string || null}
         */
        this.By = null;

        /**
         * Sorting order: desc and asc. Default value: asc.
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.By = 'By' in params ? params.By : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * DescribeLicenseBindList response structure.
 * @class
 */
class DescribeLicenseBindListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of bound machines
         * @type {Array.<LicenseBindDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new LicenseBindDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline Information
 * @class
 */
class BaselineInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Number of check items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCount = null;

        /**
         * Number of affected servers
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Pass status. 0: passed; 1: failed.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Baseline ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CategoryId = null;

        /**
         * Last check time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastScanTime = null;

        /**
         * 5: checking
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MaxStatus = null;

        /**
         * Baseline check items with risks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BaselineFailCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.RuleCount = 'RuleCount' in params ? params.RuleCount : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CategoryId = 'CategoryId' in params ? params.CategoryId : null;
        this.LastScanTime = 'LastScanTime' in params ? params.LastScanTime : null;
        this.MaxStatus = 'MaxStatus' in params ? params.MaxStatus : null;
        this.BaselineFailCount = 'BaselineFailCount' in params ? params.BaselineFailCount : null;

    }
}

/**
 * DescribeWebHookReceiverUsage response structure.
 * @class
 */
class DescribeWebHookReceiverUsageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Usage information on associated policies of the alarm recipient
         * @type {Array.<WebHookReceiverUsage> || null}
         */
        this.List = null;

        /**
         * Number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new WebHookReceiverUsage();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic information on the resource management process
 * @class
 */
class AssetAppBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Application name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Application type	
1: operations
2: database
3: Security
4: suspicious application
5: system architecture
6: system application
7: web service
99: other
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Binary path
         * @type {string || null}
         */
        this.BinPath = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Number of associated processes
         * @type {number || null}
         */
        this.ProcessCount = null;

        /**
         * Application description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Version No.
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Configuration file path
         * @type {string || null}
         */
        this.ConfigPath = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Whether the web service is newly added [0: no|1: yes]
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.BinPath = 'BinPath' in params ? params.BinPath : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProcessCount = 'ProcessCount' in params ? params.ProcessCount : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.ConfigPath = 'ConfigPath' in params ? params.ConfigPath : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeJavaMemShellInfo request structure.
 * @class
 */
class DescribeJavaMemShellInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribePrivilegeRules request structure.
 * @class
 */
class DescribePrivilegeRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returns, with the maximum value being 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - keyword (process name)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportAssetAppList request structure.
 * @class
 */
class ExportAssetAppListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>AppName - string - required: no - application name for search</li>
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Type - int - required: no - type	: Linux only
0: all
1: operations
2: database
3: Security
4: suspicious application
5: system architecture
6: system application
7: web service
99: other</li>
<li>OsType - uint64 - required: no - Windows/Linux</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: [FirstTime|ProcessCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * TestWebHookRule request structure.
 * @class
 */
class TestWebHookRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Test content
         * @type {string || null}
         */
        this.Data = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Data = 'Data' in params ? params.Data : null;

    }
}

/**
 * Java webshell event information
 * @class
 */
class JavaMemShellInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Server name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Server IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Memory Trojan Type. 0: Filter Type; 1: Listener Type; 2: Servlet Type; 3: Interceptors Type; 4: Agent Type; 5: Other
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * First detection time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last detection time
         * @type {string || null}
         */
        this.RecentFoundTime = null;

        /**
         * Processing Status. 0 - Pending; 1 - Allowlisted; 2 - Deleted; 3 - Ignored; 4 - Manually Processed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Server UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.RecentFoundTime = 'RecentFoundTime' in params ? params.RecentFoundTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeAssetSystemPackageList response structure.
 * @class
 */
class DescribeAssetSystemPackageListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetSystemPackageInfo> || null}
         */
        this.Packages = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Packages) {
            this.Packages = new Array();
            for (let z in params.Packages) {
                let obj = new AssetSystemPackageInfo();
                obj.deserialize(params.Packages[z]);
                this.Packages.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetWebFrameList response structure.
 * @class
 */
class ExportAssetWebFrameListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CheckBashPolicyParams response structure.
 * @class
 */
class CheckBashPolicyParamsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: verification passed; 1: rule name verification failed; 2: regular expression verification failed.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Verification information
         * @type {string || null}
         */
        this.ErrMsg = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.ErrMsg = 'ErrMsg' in params ? params.ErrMsg : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeClientException response structure.
 * @class
 */
class DescribeClientExceptionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of events
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Event details
         * @type {Array.<RecordInfo> || null}
         */
        this.Records = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.Records) {
            this.Records = new Array();
            for (let z in params.Records) {
                let obj = new RecordInfo();
                obj.deserialize(params.Records[z]);
                this.Records.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetMachineList response structure.
 * @class
 */
class DescribeAssetMachineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Record list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetMachineBaseInfo> || null}
         */
        this.Machines = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new AssetMachineBaseInfo();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Allowlist configuration of the authorized edition
 * @class
 */
class VersionWhiteConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of days before expiration
         * @type {number || null}
         */
        this.Deadline = null;

        /**
         * Number of authorizations
         * @type {number || null}
         */
        this.LicenseNum = null;

        /**
         * Whether application can be made
         * @type {boolean || null}
         */
        this.IsApplyFor = null;

        /**
         * Type
         * @type {number || null}
         */
        this.SourceType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Deadline = 'Deadline' in params ? params.Deadline : null;
        this.LicenseNum = 'LicenseNum' in params ? params.LicenseNum : null;
        this.IsApplyFor = 'IsApplyFor' in params ? params.IsApplyFor : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;

    }
}

/**
 * DescribeBaselineDetail request structure.
 * @class
 */
class DescribeBaselineDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline ID
         * @type {number || null}
         */
        this.BaselineId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BaselineId = 'BaselineId' in params ? params.BaselineId : null;

    }
}

/**
 * Details of Network Attack Events
 * @class
 */
class NetAttackEventInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Processing Status: 0 Pending, 1 Processed, 2 Allowlisted, 3 Ignored, 4 Deleted, 5: Defense Enabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Attack source IP address
         * @type {string || null}
         */
        this.SrcIP = null;

        /**
         * Attack Source
         * @type {string || null}
         */
        this.Location = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability CVE ID
         * @type {string || null}
         */
        this.CVEId = null;

        /**
         * Vulnerability attack level
         * @type {number || null}
         */
        this.AttackLevel = null;

        /**
         * Vulnerability Defense Status: 0 Disabled, 1 Enabled.
         * @type {number || null}
         */
        this.VulDefenceStatus = null;

        /**
         * Whether vulnerabilities support defense. 0: No 1: Yes
         * @type {number || null}
         */
        this.VulSupportDefense = null;

        /**
         * Service Process Base64 
         * @type {string || null}
         */
        this.SvcPs = null;

        /**
         * Attack packet
         * @type {string || null}
         */
        this.NetPayload = null;

        /**
         * Abnormal behavior
         * @type {string || null}
         */
        this.AbnormalAction = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Attack count
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Machine payment edition. 0: Basic Edition; 1: Professional Edition; 2: Premium Edition; 3: General Discount Edition
         * @type {number || null}
         */
        this.PayVersion = null;

        /**
         * cvm uuid
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Time of Attack
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MergeTime = null;

        /**
         * 0: Attack Attempt 1: Successful Attack
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * 0: No Compromised Behavior 1: RCE (command execution) 2: Dnslog 3: Writefile
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostOpType = null;

        /**
         * Process Tree, needs to be decoded with base64.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostOpProcessTree = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.SrcIP = 'SrcIP' in params ? params.SrcIP : null;
        this.Location = 'Location' in params ? params.Location : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.CVEId = 'CVEId' in params ? params.CVEId : null;
        this.AttackLevel = 'AttackLevel' in params ? params.AttackLevel : null;
        this.VulDefenceStatus = 'VulDefenceStatus' in params ? params.VulDefenceStatus : null;
        this.VulSupportDefense = 'VulSupportDefense' in params ? params.VulSupportDefense : null;
        this.SvcPs = 'SvcPs' in params ? params.SvcPs : null;
        this.NetPayload = 'NetPayload' in params ? params.NetPayload : null;
        this.AbnormalAction = 'AbnormalAction' in params ? params.AbnormalAction : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.PayVersion = 'PayVersion' in params ? params.PayVersion : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MergeTime = 'MergeTime' in params ? params.MergeTime : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.HostOpType = 'HostOpType' in params ? params.HostOpType : null;
        this.HostOpProcessTree = 'HostOpProcessTree' in params ? params.HostOpProcessTree : null;

    }
}

/**
 * GetLocalStorageItem response structure.
 * @class
 */
class GetLocalStorageItemResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Value
         * @type {string || null}
         */
        this.Value = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Value = 'Value' in params ? params.Value : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenDefenseTrends request structure.
 * @class
 */
class DescribeScreenDefenseTrendsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * Record of stored log size
 * @class
 */
class LogStorageRecord extends  AbstractModel {
    constructor(){
        super();

        /**
         * Year and month
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Month = null;

        /**
         * Used storage capacity, in bytes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.UsedSize = null;

        /**
         * Total capacity, in bytes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.InquireSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Month = 'Month' in params ? params.Month : null;
        this.UsedSize = 'UsedSize' in params ? params.UsedSize : null;
        this.InquireSize = 'InquireSize' in params ? params.InquireSize : null;

    }
}

/**
 * DescribeBruteAttackList response structure.
 * @class
 */
class DescribeBruteAttackListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of password cracking attacks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BruteAttackInfo> || null}
         */
        this.BruteAttackList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.BruteAttackList) {
            this.BruteAttackList = new Array();
            for (let z in params.BruteAttackList) {
                let obj = new BruteAttackInfo();
                obj.deserialize(params.BruteAttackList[z]);
                this.BruteAttackList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetInfo request structure.
 * @class
 */
class DescribeAssetInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeJavaMemShellPluginList request structure.
 * @class
 */
class DescribeJavaMemShellPluginListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter Criteria: Keywords: Fuzzy query of IP or host name, JavaShellStatus, exact match of Exception
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Host information for batch vulnerability fixing
 * @class
 */
class CanFixVulInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Information on hosts where this vulnerability can be fixed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulInfoHostInfo> || null}
         */
        this.HostList = null;

        /**
         * Fixing prompt tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.FixTag = null;

        /**
         * 
         * @type {number || null}
         */
        this.VulCategory = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.VulName = 'VulName' in params ? params.VulName : null;

        if (params.HostList) {
            this.HostList = new Array();
            for (let z in params.HostList) {
                let obj = new VulInfoHostInfo();
                obj.deserialize(params.HostList[z]);
                this.HostList.push(obj);
            }
        }
        this.FixTag = 'FixTag' in params ? params.FixTag : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;

    }
}

/**
 * DescribeWebHookPolicy request structure.
 * @class
 */
class DescribeWebHookPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
         * @type {Array.<Filter> || null}
         */
        this.Filter = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filter) {
            this.Filter = new Array();
            for (let z in params.Filter) {
                let obj = new Filter();
                obj.deserialize(params.Filter[z]);
                this.Filter.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * EditReverseShellRules response structure.
 * @class
 */
class EditReverseShellRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Vulnerability overview
 * @class
 */
class VulOverview extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Number of new key-value pairs today
         * @type {number || null}
         */
        this.TodayCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TodayCount = 'TodayCount' in params ? params.TodayCount : null;

    }
}

/**
 * DescribeAssetUserKeyList response structure.
 * @class
 */
class DescribeAssetUserKeyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Public key list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetUserKeyInfo> || null}
         */
        this.Keys = null;

        /**
         * Total number of partitions
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Keys) {
            this.Keys = new Array();
            for (let z in params.Keys) {
                let obj = new AssetUserKeyInfo();
                obj.deserialize(params.Keys[z]);
                this.Keys.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulLabels request structure.
 * @class
 */
class DescribeVulLabelsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAssetAppList request structure.
 * @class
 */
class DescribeAssetAppListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>AppName - string - required: no - application name for search</li>
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Type - int - required: no - type : Linux only	
0: all
1: operations
2: database
3: Security
4: suspicious application
5: system architecture
6: system application
7: web service
99: other</li>
<li>OsType - uint64 - required: no - Windows/Linux</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: [FirstTime|ProcessCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * UntrustMalwares response structure.
 * @class
 */
class UntrustMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Availability zone information
 * @class
 */
class ZoneInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Availability zone name
         * @type {string || null}
         */
        this.ZoneName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ZoneName = 'ZoneName' in params ? params.ZoneName : null;

    }
}

/**
 * DescribeExpertServiceList response structure.
 * @class
 */
class DescribeExpertServiceListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Security manager data
         * @type {Array.<SecurityButlerInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new SecurityButlerInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAccountStatistics response structure.
 * @class
 */
class DescribeAccountStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of account statistics list records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Account statistics list
         * @type {Array.<AccountStatistics> || null}
         */
        this.AccountStatistics = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AccountStatistics) {
            this.AccountStatistics = new Array();
            for (let z in params.AccountStatistics) {
                let obj = new AccountStatistics();
                obj.deserialize(params.AccountStatistics[z]);
                this.AccountStatistics.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashEventsInfoNew request structure.
 * @class
 */
class DescribeBashEventsInfoNewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * Attack and defense trend chart on the large screen
 * @class
 */
class ScreenTrendsChart extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time on the X-axis
         * @type {string || null}
         */
        this.X = null;

        /**
         * Numerical value on the Y-axis
         * @type {number || null}
         */
        this.Y = null;

        /**
         * Statistical type: defense count, attack count
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.X = 'X' in params ? params.X : null;
        this.Y = 'Y' in params ? params.Y : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * ModifyLoginWhiteInfo response structure.
 * @class
 */
class ModifyLoginWhiteInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineRule response structure.
 * @class
 */
class DescribeBaselineRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of pagination query records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Baseline check item list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineRuleInfo> || null}
         */
        this.BaselineRuleList = null;

        /**
         * Whether to display the description column. True: yes; false: no.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.ShowRuleRemark = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.BaselineRuleList) {
            this.BaselineRuleList = new Array();
            for (let z in params.BaselineRuleList) {
                let obj = new BaselineRuleInfo();
                obj.deserialize(params.BaselineRuleList[z]);
                this.BaselineRuleList.push(obj);
            }
        }
        this.ShowRuleRemark = 'ShowRuleRemark' in params ? params.ShowRuleRemark : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Attack backtracking node
 * @class
 */
class AttackSourceNode extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID. If this parameter is left blank, no corresponding event exists.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * BRUTEFORCE: password cracking; MALWARE: Trojan; BASH: high-risk command; RISK_DNS: malicious request; LOGIN: cross-region log-in; HOST: host node; TIME_ORDER: general node.
         * @type {string || null}
         */
        this.EventType = null;

        /**
         * Node IP address. When the node is HOST, the value is the IP address of this node.
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Level. 0: prompt; 1: low-risk; 2: medium-risk; 3: high-risk; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Node ID
         * @type {string || null}
         */
        this.NodeId = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * General node description
         * @type {string || null}
         */
        this.NodeDesc = null;

        /**
         * Timeline number. Nodes with the same number belong to the same timeline.
         * @type {number || null}
         */
        this.TimeLineNum = null;

        /**
         * Node details
         * @type {string || null}
         */
        this.NodeDetail = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.NodeId = 'NodeId' in params ? params.NodeId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.NodeDesc = 'NodeDesc' in params ? params.NodeDesc : null;
        this.TimeLineNum = 'TimeLineNum' in params ? params.TimeLineNum : null;
        this.NodeDetail = 'NodeDetail' in params ? params.NodeDetail : null;

    }
}

/**
 * DescribeRiskDnsPolicyList request structure.
 * @class
 */
class DescribeRiskDnsPolicyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>PolicyType - int - required: no - policy type</li>
<li>PolicyName - string - required: no - policy name</li>
<li>Domain - string - required: no - domain name (URL encoding and then Base64 encoding on the domain name)</li>
<li>PolicyAction - int - required: no - policy action</li>
<li>IsEnabled - int - required: no - whether the policy is enabled</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column: [HostScope|UpdateTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DeleteMaliciousRequests response structure.
 * @class
 */
class DeleteMaliciousRequestsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookReceiver request structure.
 * @class
 */
class DescribeWebHookReceiverRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
         * @type {Array.<Filter> || null}
         */
        this.Filter = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filter) {
            this.Filter = new Array();
            for (let z in params.Filter) {
                let obj = new Filter();
                obj.deserialize(params.Filter[z]);
                this.Filter.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Information on the vulnerability database list
 * @class
 */
class VulStoreListInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability level
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * CVE ID
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * 1: web-cms vulnerabilities; 2: application vulnerabilities; 4: Linux software vulnerabilities; 5: Windows system vulnerabilities; 0: emergency vulnerabilities.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Release time
         * @type {string || null}
         */
        this.PublishDate = null;

        /**
         * Vulnerability Detection Method: 0 - Version Comparison, 1 - POC Verification
         * @type {number || null}
         */
        this.Method = null;

        /**
         * Vulnerability attack level
         * @type {number || null}
         */
        this.AttackLevel = null;

        /**
         * Whether automatic vulnerability fixing is supported
0: not supported on Windows/Linux; 1: supported on Windows/Linux; 2: supported on Linux only; 3: supported on Windows only.
         * @type {number || null}
         */
        this.FixSwitch = null;

        /**
         * Whether defense against vulnerabilities is supported
0: not supported; 1: supported.
         * @type {number || null}
         */
        this.SupportDefense = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.PublishDate = 'PublishDate' in params ? params.PublishDate : null;
        this.Method = 'Method' in params ? params.Method : null;
        this.AttackLevel = 'AttackLevel' in params ? params.AttackLevel : null;
        this.FixSwitch = 'FixSwitch' in params ? params.FixSwitch : null;
        this.SupportDefense = 'SupportDefense' in params ? params.SupportDefense : null;

    }
}

/**
 * DescribeScreenEventsCnt response structure.
 * @class
 */
class DescribeScreenEventsCntResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event statistics details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenEventsCnt> || null}
         */
        this.Info = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Info) {
            this.Info = new Array();
            for (let z in params.Info) {
                let obj = new ScreenEventsCnt();
                obj.deserialize(params.Info[z]);
                this.Info.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateIncidentBacktracking request structure.
 * @class
 */
class CreateIncidentBacktrackingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CWPP QUUID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * DescribeVulDefencePluginStatus request structure.
 * @class
 */
class DescribeVulDefencePluginStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Keywords - String - required: no - host IP address or alias for filtering</li>
<li>Exception - String - required: no - plugin status: 0: normal; 1: abnormal; 2: no Java process injection</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Data offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Data limit
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method, case insensitive: ASC for ascending order; DESC for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column (exact match). CreateTime: creation time; ModifyTime: update time.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeBashEventsInfoNew response structure.
 * @class
 */
class DescribeBashEventsInfoNewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {BashEventsInfoNew || null}
         */
        this.BashEventsInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BashEventsInfo) {
            let obj = new BashEventsInfoNew();
            obj.deserialize(params.BashEventsInfo)
            this.BashEventsInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetLocalStorageItem request structure.
 * @class
 */
class GetLocalStorageItemRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key
         * @type {string || null}
         */
        this.Key = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;

    }
}

/**
 * Enterprise WeChat Robot Event Types
 * @class
 */
class WebHookEventKv extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event type
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Event content
         * @type {string || null}
         */
        this.ControlBit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.ControlBit = 'ControlBit' in params ? params.ControlBit : null;

    }
}

/**
 * ExportBruteAttacks request structure.
 * @class
 */
class ExportBruteAttacksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DeleteMachine response structure.
 * @class
 */
class DeleteMachineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Prevention of Ransomware, Bait and Tamper Events
 * @class
 */
class RansomDefenseEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * cvm uuid
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Event Status: 0-Pending, 1-Processed, 2-Trusted, 3-In Process, 4-Backup Resumed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Tampered File Path
         * @type {string || null}
         */
        this.BaitFilePath = null;

        /**
         * Malicious File Path
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * Malicious Process ID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Malicious Process Parameters
         * @type {string || null}
         */
        this.PidParam = null;

        /**
         * Malicious File Size
         * @type {number || null}
         */
        this.FileSize = null;

        /**
         * Malicious File MD5
         * @type {string || null}
         */
        this.FileMd5 = null;

        /**
         * Event Type: 0 Encrypted Ransom, 1 File Tampering
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Event Sending Time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * CVM Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Event Modification Event
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host Intranet IP
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * Process Tree Base64 Json
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Process startup time
         * @type {string || null}
         */
        this.ProcessStartTime = null;

        /**
         * Number of Snapshot Backups Owned by the Host
         * @type {number || null}
         */
        this.SnapshotNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.BaitFilePath = 'BaitFilePath' in params ? params.BaitFilePath : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.PidParam = 'PidParam' in params ? params.PidParam : null;
        this.FileSize = 'FileSize' in params ? params.FileSize : null;
        this.FileMd5 = 'FileMd5' in params ? params.FileMd5 : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.ProcessStartTime = 'ProcessStartTime' in params ? params.ProcessStartTime : null;
        this.SnapshotNum = 'SnapshotNum' in params ? params.SnapshotNum : null;

    }
}

/**
 * DeleteMalwareWhiteList request structure.
 * @class
 */
class DeleteMalwareWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array, with the maximum value being 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Merge cross-region log-in allowlists
 * @class
 */
class LoginWhiteCombinedInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist region
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Place> || null}
         */
        this.Places = null;

        /**
         * Allowlisted users (Multiple users are separated by commas.)
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Allowlisted IPs (Multiple IPs are separated by commas.)
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Region string
         * @type {string || null}
         */
        this.Locale = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Whether the settings take effect globally. 1: take effect globally; 0: take effect on the specified host list.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Allowlist name. If IsLocal is set to 1, the name is fixed as All servers. If the allowlist applies to only a single server, the name is the server's private IP Address. If the allowlist applies to multiple servers, the name is the number of servers, such as 11.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Return the server name when the allowlist applies to only one server.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Allowlist ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Login Location
         * @type {string || null}
         */
        this.Locations = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Places) {
            this.Places = new Array();
            for (let z in params.Places) {
                let obj = new Place();
                obj.deserialize(params.Places[z]);
                this.Places.push(obj);
            }
        }
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.Locale = 'Locale' in params ? params.Locale : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Locations = 'Locations' in params ? params.Locations : null;

    }
}

/**
 * SetLocalStorageExpire response structure.
 * @class
 */
class SetLocalStorageExpireResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Alarm recipient
 * @class
 */
class WebHookReceiver extends  AbstractModel {
    constructor(){
        super();

        /**
         * id
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Recipient name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Webhook URL
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Addr = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Addr = 'Addr' in params ? params.Addr : null;

    }
}

/**
 * DescribeAttackSource response structure.
 * @class
 */
class DescribeAttackSourceResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack backtracking data
         * @type {AttackSource || null}
         */
        this.AttackSource = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AttackSource) {
            let obj = new AttackSource();
            obj.deserialize(params.AttackSource)
            this.AttackSource = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetTypeTop response structure.
 * @class
 */
class DescribeAssetTypeTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top 5 accounts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.User = null;

        /**
         * Top 5 ports
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Port = null;

        /**
         * Top 5 processes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Process = null;

        /**
         * Top 5 software
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Software = null;

        /**
         * Top 5 databases
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Database = null;

        /**
         * Top 5 web applications
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebApp = null;

        /**
         * Top 5 web sites
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebLocation = null;

        /**
         * Top 5 web frameworks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebFrame = null;

        /**
         * Top 5 web services
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebService = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.User) {
            this.User = new Array();
            for (let z in params.User) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.User[z]);
                this.User.push(obj);
            }
        }

        if (params.Port) {
            this.Port = new Array();
            for (let z in params.Port) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Port[z]);
                this.Port.push(obj);
            }
        }

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }

        if (params.Software) {
            this.Software = new Array();
            for (let z in params.Software) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Software[z]);
                this.Software.push(obj);
            }
        }

        if (params.Database) {
            this.Database = new Array();
            for (let z in params.Database) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Database[z]);
                this.Database.push(obj);
            }
        }

        if (params.WebApp) {
            this.WebApp = new Array();
            for (let z in params.WebApp) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebApp[z]);
                this.WebApp.push(obj);
            }
        }

        if (params.WebLocation) {
            this.WebLocation = new Array();
            for (let z in params.WebLocation) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebLocation[z]);
                this.WebLocation.push(obj);
            }
        }

        if (params.WebFrame) {
            this.WebFrame = new Array();
            for (let z in params.WebFrame) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebFrame[z]);
                this.WebFrame.push(obj);
            }
        }

        if (params.WebService) {
            this.WebService = new Array();
            for (let z in params.WebService) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebService[z]);
                this.WebService.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulDefencePluginExceptionCount request structure.
 * @class
 */
class DescribeVulDefencePluginExceptionCountRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLogIndex request structure.
 * @class
 */
class DescribeLogIndexRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Information on tag-related servers
 * @class
 */
class TagMachine extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host region
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Host region type
         * @type {string || null}
         */
        this.MachineType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;

    }
}

/**
 * DescribeAssetCoreModuleInfo response structure.
 * @class
 */
class DescribeAssetCoreModuleInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Kernel module details
         * @type {AssetCoreModuleDetail || null}
         */
        this.Module = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Module) {
            let obj = new AssetCoreModuleDetail();
            obj.deserialize(params.Module)
            this.Module = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Authorization binding task details
 * @class
 */
class LicenseBindTaskDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM UUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Error message
         * @type {string || null}
         */
        this.ErrMsg = null;

        /**
         * 0-in progress; 1-succeeded; 2-failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Fix suggestion
         * @type {string || null}
         */
        this.FixMessage = null;

        /**
         * Additional information of machine
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.ErrMsg = 'ErrMsg' in params ? params.ErrMsg : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FixMessage = 'FixMessage' in params ? params.FixMessage : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeAssetEnvList request structure.
 * @class
 */
class DescribeAssetEnvListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * This field has been deprecated and replaced with Filters.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>Name - string - required: no - environment variable name</li>
<li>Type - int - required: no - type: 0: user variable; 1: system variable</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Type = 'Type' in params ? params.Type : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Tag information
 * @class
 */
class Tag extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Tag name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Number of servers
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * StopNoticeBanTips request structure.
 * @class
 */
class StopNoticeBanTipsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Visualized attack and defense status on large screen
 * @class
 */
class ScreenProtection extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type value: virus scanning, brute force cracking, vulnerability scan, baseline check
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Virus scanning: 0: never scanned or asset not paid; 1: scanned and malicious files found; 2: scanned but isolation protection disabled; 3: scanned, protection enabled, and no risk found.
Brute force cracking: 0: protection disabled (asset not paid); 1: automatic blocking enabled.
Vulnerability scan: 0: never scanned or asset not paid; 1: vulnerability found; 2: no risk found.
Baseline check: 0: never checked or asset not paid; 1: baseline risks found; 2: no risk found.
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DescribeScanMalwareSchedule request structure.
 * @class
 */
class DescribeScanMalwareScheduleRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Baseline check parameters
 * @class
 */
class BaselineDetectParam extends  AbstractModel {
    constructor(){
        super();

        /**
         * Collection of check policies
         * @type {Array.<number> || null}
         */
        this.PolicyIds = null;

        /**
         * Collection of check rules
         * @type {Array.<number> || null}
         */
        this.RuleIds = null;

        /**
         * Collection of check items
         * @type {Array.<number> || null}
         */
        this.ItemIds = null;

        /**
         * Collection of checked server IDs
         * @type {Array.<string> || null}
         */
        this.HostIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyIds = 'PolicyIds' in params ? params.PolicyIds : null;
        this.RuleIds = 'RuleIds' in params ? params.RuleIds : null;
        this.ItemIds = 'ItemIds' in params ? params.ItemIds : null;
        this.HostIds = 'HostIds' in params ? params.HostIds : null;

    }
}

/**
 * DescribeBashEvents response structure.
 * @class
 */
class DescribeBashEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of high-risk command events
         * @type {Array.<BashEvent> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BashEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Index value description
 * @class
 */
class ValueInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Field delimiter
         * @type {string || null}
         */
        this.Tokenizer = null;

        /**
         * Field type
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Whether the analysis feature is enabled for the field
         * @type {boolean || null}
         */
        this.SqlFlag = null;

        /**
         * Whether Chinese characters are contained
         * @type {boolean || null}
         */
        this.ContainZH = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Tokenizer = 'Tokenizer' in params ? params.Tokenizer : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.SqlFlag = 'SqlFlag' in params ? params.SqlFlag : null;
        this.ContainZH = 'ContainZH' in params ? params.ContainZH : null;

    }
}

/**
 * ModifyVulDefenceSetting response structure.
 * @class
 */
class ModifyVulDefenceSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeEventByTable request structure.
 * @class
 */
class DescribeEventByTableRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event table name
         * @type {string || null}
         */
        this.TableName = null;

        /**
         * Event table ID
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TableName = 'TableName' in params ? params.TableName : null;
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeTrialReport response structure.
 * @class
 */
class DescribeTrialReportResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashEvents request structure.
 * @class
 */
class DescribeBashEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>HostName - String - required: no - host name</li>
<li>Hostip - String - required: no - host's private IP address</li>
<li>RuleCategory - Int - required: no - policy type (all types or a single type): 0: system; 1: user</li>
<li>RuleName - String - required: no - policy name</li>
<li>RuleLevel - Int - required: no - threat Level (multiple levels supported)</li>
<li>Status - Int - required: no - processing status (multiple statuses supported): 0: pending; 1: processed; 2: added to allowlist; 3: ignored; 4: deleted; 5: blocked</li>
<li>DetectBy - Int - required: no - data source (multiple sources supported): 0: bash logs; 1: real-time monitoring</li>
<li>StartTime - String - required: no - start time</li>
<li>EndTime - String - required: no - end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: sort by number of requests. asc: ascending order; desc: descending order.
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field. CreateTime: occurrence time; ModifyTime: processing time.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DeleteMachineClearHistory request structure.
 * @class
 */
class DeleteMachineClearHistoryRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * IDs of records to be deleted, up to 100 characters in length
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeLogHistogram response structure.
 * @class
 */
class DescribeLogHistogramResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result details of statistics within the period
         * @type {Array.<LogHistogram> || null}
         */
        this.Data = null;

        /**
         * Statistical period (unit: ms)
         * @type {number || null}
         */
        this.Period = null;

        /**
         * Total number of logs that hit the keywords
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new LogHistogram();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.Period = 'Period' in params ? params.Period : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeUsersConfig request structure.
 * @class
 */
class DescribeUsersConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Configuration name
<li>license_monitor authorization monitoring configuration. 0: off; 1: on</li>
         * @type {string || null}
         */
        this.ConfigName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ConfigName = 'ConfigName' in params ? params.ConfigName : null;

    }
}

/**
 * DeleteMachine request structure.
 * @class
 */
class DeleteMachineRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CWPP client Uuid
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeAssetWebLocationList response structure.
 * @class
 */
class DescribeAssetWebLocationListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Site list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebLocationBaseInfo> || null}
         */
        this.Locations = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Locations) {
            this.Locations = new Array();
            for (let z in params.Locations) {
                let obj = new AssetWebLocationBaseInfo();
                obj.deserialize(params.Locations[z]);
                this.Locations.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetDiskList response structure.
 * @class
 */
class DescribeAssetDiskListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Disk partition list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetDiskPartitionInfo> || null}
         */
        this.Disks = null;

        /**
         * Total number of partitions
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Disks) {
            this.Disks = new Array();
            for (let z in params.Disks) {
                let obj = new AssetDiskPartitionInfo();
                obj.deserialize(params.Disks[z]);
                this.Disks.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetPlanTaskList request structure.
 * @class
 */
class ExportAssetPlanTaskListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>User- string - required: no - user</li>
<li>Status- int - required: no - default enabling status: 0 - unenabled; 1 - enabled</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Client Exception Information Structure
 * @class
 */
class RecordInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIP = null;

        /**
         * Host Instance ID
         * @type {string || null}
         */
        this.InstanceID = null;

        /**
         * Client Offline Time
         * @type {string || null}
         */
        this.OfflineTime = null;

        /**
         * Client Uninstallation Time
         * @type {string || null}
         */
        this.UninstallTime = null;

        /**
         * Client Uninstallation Call Chain
         * @type {string || null}
         */
        this.UninstallCmd = null;

        /**
         * Client UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostIP = 'HostIP' in params ? params.HostIP : null;
        this.InstanceID = 'InstanceID' in params ? params.InstanceID : null;
        this.OfflineTime = 'OfflineTime' in params ? params.OfflineTime : null;
        this.UninstallTime = 'UninstallTime' in params ? params.UninstallTime : null;
        this.UninstallCmd = 'UninstallCmd' in params ? params.UninstallCmd : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeAssetHostTotalCount response structure.
 * @class
 */
class DescribeAssetHostTotalCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual resources
system: resource monitoring
account: account
port: port
process: process
app: application software
database: database
webapp: Web application
webframe: Web framework
webservice: Web service
weblocation: Web site
systempackage: system installation package
jar: jar package
initservice: startup service
env: environment variable
coremodule: kernel module
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Types = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Types) {
            this.Types = new Array();
            for (let z in params.Types) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Types[z]);
                this.Types.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineSnapshot request structure.
 * @class
 */
class DescribeMachineSnapshotRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM ID collection
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Inquiry snapshot type: 0 - latest one; 1 - all
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Number of Pagination
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination step size
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * StopAssetScan response structure.
 * @class
 */
class StopAssetScanResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetJarList request structure.
 * @class
 */
class DescribeAssetJarListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name- string - required: no - package name</li>
<li>Type- uint - required: no - type	
1: application
2: system class library3: web service built-in library
4: other dependent packages</li>
<li>Status - string - required: no - whether execution is allowed: 0: no; 1: yes</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Cross-region log-in allowlist
 * @class
 */
class LoginWhiteLists extends  AbstractModel {
    constructor(){
        super();

        /**
         * Record ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Yunjing client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Allowlisted regions
         * @type {Array.<Place> || null}
         */
        this.Places = null;

        /**
         * Allowlisted users (Multiple users are separated by commas.)
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Allowlisted IPs (Multiple IPs are separated by commas.)
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Whether a global rule
         * @type {boolean || null}
         */
        this.IsGlobal = null;

        /**
         * Time of creating the allowlist
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Time of modifying the allowlist
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Machine name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Machine IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

        if (params.Places) {
            this.Places = new Array();
            for (let z in params.Places) {
                let obj = new Place();
                obj.deserialize(params.Places[z]);
                this.Places.push(obj);
            }
        }
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * TrustMalwares request structure.
 * @class
 */
class TrustMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan ID array (The maximum number of IDs at one time is 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Generic data structure of Key-val type
 * @class
 */
class AssetKeyVal extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag
         * @type {string || null}
         */
        this.Key = null;

        /**
         * Quantity
         * @type {number || null}
         */
        this.Value = null;

        /**
         * Description information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Number of additions today
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NewCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.NewCount = 'NewCount' in params ? params.NewCount : null;

    }
}

/**
 * Asset management Web site list information
 * @class
 */
class AssetWebLocationInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Site port
         * @type {string || null}
         */
        this.Port = null;

        /**
         * Site protocol
         * @type {string || null}
         */
        this.Proto = null;

        /**
         * Service type
         * @type {string || null}
         */
        this.ServiceType = null;

        /**
         * Security module status. 0: not enabled; 1: enabled; 999: null (nginx only)
         * @type {number || null}
         */
        this.SafeStatus = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Home directory
         * @type {string || null}
         */
        this.MainPath = null;

        /**
         * Startup command
         * @type {string || null}
         */
        this.Command = null;

        /**
         * Bind IP
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.Proto = 'Proto' in params ? params.Proto : null;
        this.ServiceType = 'ServiceType' in params ? params.ServiceType : null;
        this.SafeStatus = 'SafeStatus' in params ? params.SafeStatus : null;
        this.User = 'User' in params ? params.User : null;
        this.MainPath = 'MainPath' in params ? params.MainPath : null;
        this.Command = 'Command' in params ? params.Command : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * ChangeRuleEventsIgnoreStatus response structure.
 * @class
 */
class ChangeRuleEventsIgnoreStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteWebHookRule response structure.
 * @class
 */
class DeleteWebHookRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SeparateMalwares request structure.
 * @class
 */
class SeparateMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan event ID array (The maximum number of IDs is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Whether to kill the process
         * @type {boolean || null}
         */
        this.KillProcess = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.KillProcess = 'KillProcess' in params ? params.KillProcess : null;

    }
}

/**
 * Resource management database list information
 * @class
 */
class AssetDatabaseBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Database name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Listening port
         * @type {string || null}
         */
        this.Port = null;

        /**
         * Protocol
         * @type {string || null}
         */
        this.Proto = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Bound IP
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Configuration file path
         * @type {string || null}
         */
        this.ConfigPath = null;

        /**
         * Log file path
         * @type {string || null}
         */
        this.LogPath = null;

        /**
         * Data path
         * @type {string || null}
         */
        this.DataPath = null;

        /**
         * Running permission
         * @type {string || null}
         */
        this.Permission = null;

        /**
         * Error log path
         * @type {string || null}
         */
        this.ErrorLogPath = null;

        /**
         * Plugin path
         * @type {string || null}
         */
        this.PlugInPath = null;

        /**
         * Binary path
         * @type {string || null}
         */
        this.BinPath = null;

        /**
         * Startup parameter
         * @type {string || null}
         */
        this.Param = null;

        /**
         * Database ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether newly added [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.Proto = 'Proto' in params ? params.Proto : null;
        this.User = 'User' in params ? params.User : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.ConfigPath = 'ConfigPath' in params ? params.ConfigPath : null;
        this.LogPath = 'LogPath' in params ? params.LogPath : null;
        this.DataPath = 'DataPath' in params ? params.DataPath : null;
        this.Permission = 'Permission' in params ? params.Permission : null;
        this.ErrorLogPath = 'ErrorLogPath' in params ? params.ErrorLogPath : null;
        this.PlugInPath = 'PlugInPath' in params ? params.PlugInPath : null;
        this.BinPath = 'BinPath' in params ? params.BinPath : null;
        this.Param = 'Param' in params ? params.Param : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Authorization Order Object Content
 * @class
 */
class LicenseOrder extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization ID
         * @type {number || null}
         */
        this.LicenseId = null;

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Authorization Order Resource Status
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Order type
         * @type {number || null}
         */
        this.SourceType = null;

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseId = 'LicenseId' in params ? params.LicenseId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

    }
}

/**
 * DeletePrivilegeRules response structure.
 * @class
 */
class DeletePrivilegeRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateMalwareWhiteList response structure.
 * @class
 */
class CreateMalwareWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateWhiteListOrder response structure.
 * @class
 */
class CreateWhiteListOrderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource object
         * @type {OrderResource || null}
         */
        this.Resource = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Resource) {
            let obj = new OrderResource();
            obj.deserialize(params.Resource)
            this.Resource = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBashPolicyStatus response structure.
 * @class
 */
class ModifyBashPolicyStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateEmergencyVulScan response structure.
 * @class
 */
class CreateEmergencyVulScanResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeTagMachines response structure.
 * @class
 */
class DescribeTagMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List data
         * @type {Array.<TagMachine> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new TagMachine();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeHotVulTop response structure.
 * @class
 */
class DescribeHotVulTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulStoreListInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulStoreListInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseMachineStrategyInfo request structure.
 * @class
 */
class DescribeRansomDefenseMachineStrategyInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host Quuid List
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DescribeAssetCoreModuleInfo request structure.
 * @class
 */
class DescribeAssetCoreModuleInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Kernel module ID
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeProductStatus response structure.
 * @class
 */
class DescribeProductStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * API call response status code
         * @type {number || null}
         */
        this.ReturnCode = null;

        /**
         * API call response information
         * @type {string || null}
         */
        this.ReturnMsg = null;

        /**
         * Protection status and trial information
         * @type {ProductStatusInfo || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReturnCode = 'ReturnCode' in params ? params.ReturnCode : null;
        this.ReturnMsg = 'ReturnMsg' in params ? params.ReturnMsg : null;

        if (params.Data) {
            let obj = new ProductStatusInfo();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeIndexList response structure.
 * @class
 */
class DescribeIndexListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * ES index information
         * @type {string || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Data = 'Data' in params ? params.Data : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyJavaMemShellPluginSwitch request structure.
 * @class
 */
class ModifyJavaMemShellPluginSwitchRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID array
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Plugin target status. 0: off; 1: on
         * @type {number || null}
         */
        this.JavaShellStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.JavaShellStatus = 'JavaShellStatus' in params ? params.JavaShellStatus : null;

    }
}

/**
 * DescribeIgnoreHostAndItemConfig response structure.
 * @class
 */
class DescribeIgnoreHostAndItemConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Affected detection items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineItemInfo> || null}
         */
        this.ItemSet = null;

        /**
         * Affected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineHost> || null}
         */
        this.HostSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ItemSet) {
            this.ItemSet = new Array();
            for (let z in params.ItemSet) {
                let obj = new BaselineItemInfo();
                obj.deserialize(params.ItemSet[z]);
                this.ItemSet.push(obj);
            }
        }

        if (params.HostSet) {
            this.HostSet = new Array();
            for (let z in params.HostSet) {
                let obj = new BaselineHost();
                obj.deserialize(params.HostSet[z]);
                this.HostSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RemoveLocalStorageItem response structure.
 * @class
 */
class RemoveLocalStorageItemResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeFileTamperRuleInfo response structure.
 * @class
 */
class DescribeFileTamperRuleInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule details
         * @type {FileTamperRuleDetail || null}
         */
        this.FileTamperRuleDetail = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FileTamperRuleDetail) {
            let obj = new FileTamperRuleDetail();
            obj.deserialize(params.FileTamperRuleDetail)
            this.FileTamperRuleDetail = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSafeInfo request structure.
 * @class
 */
class DescribeSafeInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeVdbAndPocInfo response structure.
 * @class
 */
class DescribeVdbAndPocInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Virus database update time
         * @type {string || null}
         */
        this.VdbUpdateTime = null;

        /**
         * Vulnerability database update time
         * @type {string || null}
         */
        this.PocUpdateTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VdbUpdateTime = 'VdbUpdateTime' in params ? params.VdbUpdateTime : null;
        this.PocUpdateTime = 'PocUpdateTime' in params ? params.PocUpdateTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackEvents response structure.
 * @class
 */
class DescribeAttackEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack Event List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<NetAttackEvent> || null}
         */
        this.List = null;

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new NetAttackEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseMachineStrategyInfo response structure.
 * @class
 */
class DescribeRansomDefenseMachineStrategyInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of Policy IDs. 0 indicates no policy is bound.
         * @type {Array.<number> || null}
         */
        this.StrategyIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyIds = 'StrategyIds' in params ? params.StrategyIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeReverseShellEventInfo response structure.
 * @class
 */
class DescribeReverseShellEventInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reverse shell details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReverseShellEventInfo || null}
         */
        this.ReverseShellEventInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ReverseShellEventInfo) {
            let obj = new ReverseShellEventInfo();
            obj.deserialize(params.ReverseShellEventInfo)
            this.ReverseShellEventInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportJavaMemShellPlugins request structure.
 * @class
 */
class ExportJavaMemShellPluginsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Keywords: IP or host name for fuzzy query; Pid for precise match; MainClass for fuzzy match
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Export fields
         * @type {Array.<string> || null}
         */
        this.Where = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Where = 'Where' in params ? params.Where : null;

    }
}

/**
 * DescribeBanWhiteList response structure.
 * @class
 */
class DescribeBanWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Allowlist
         * @type {Array.<BanWhiteListDetail> || null}
         */
        this.WhiteList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.WhiteList) {
            this.WhiteList = new Array();
            for (let z in params.WhiteList) {
                let obj = new BanWhiteListDetail();
                obj.deserialize(params.WhiteList[z]);
                this.WhiteList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateVulFix response structure.
 * @class
 */
class CreateVulFixResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.FixId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FixId = 'FixId' in params ? params.FixId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeOpenPortStatistics response structure.
 * @class
 */
class DescribeOpenPortStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of lists of port statistics
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of port statistics
         * @type {Array.<OpenPortStatistics> || null}
         */
        this.OpenPortStatistics = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.OpenPortStatistics) {
            this.OpenPortStatistics = new Array();
            for (let z in params.OpenPortStatistics) {
                let obj = new OpenPortStatistics();
                obj.deserialize(params.OpenPortStatistics[z]);
                this.OpenPortStatistics.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRiskDnsEventList request structure.
 * @class
 */
class ExportRiskDnsEventListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>IpOrName - String - required: no - filter by host IP or alias</li>
<li>HostId - String - required: no - host ID</li>
<li>AgentId - String - required: no - client ID</li>
<li>PolicyType - String - required: no - policy type: 0 - system policy; 1 - user-defined policy</li>
<li>Domain - String - required: no - domain name (First convert the domain name into the urlencode format, and then encode it using base64.)</li>
<li>HandleStatus - String - required: no - filter by status: 0 - pending; 2 - trusted; 3 - untrusted</li>
<li>BeginTime - String - required: no - start time of last access</li>
<li>EndTime - String - required: no - end time of last access</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: [ASC: ascending order|DESC: descending order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: [AccessCount: number of requests|LastTime: last request time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Security event message data
 * @class
 */
class SecurityDynamic extends  AbstractModel {
    constructor(){
        super();

        /**
         * CWPP client UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Security event occurrence time
         * @type {string || null}
         */
        this.EventTime = null;

        /**
         * Security event type
<li>MALWARE: Trojan event</li>
<li>NON_LOCAL_LOGIN: cross-region log-in</li>
<li>BRUTEATTACK_SUCCESS: successful password cracking</li>
<li>VUL: vulnerability</li>
<li>BASELINE: security baseline</li>
         * @type {string || null}
         */
        this.EventType = null;

        /**
         * Security event message
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Security event level
<li>RISK: critical</li>
<li>HIGH: high-risk</li>
<li>NORMAL: medium-risk</li>
<li>LOW: low-risk</li>
<li>UNKNOWNED: suspicious</li>
         * @type {string || null}
         */
        this.SecurityLevel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.EventTime = 'EventTime' in params ? params.EventTime : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.SecurityLevel = 'SecurityLevel' in params ? params.SecurityLevel : null;

    }
}

/**
 * DescribeMachineGeneral request structure.
 * @class
 */
class DescribeMachineGeneralRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ExportRiskProcessEvents response structure.
 * @class
 */
class ExportRiskProcessEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetDatabaseCount response structure.
 * @class
 */
class DescribeAssetDatabaseCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of obtained database assets
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Databases = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Databases) {
            this.Databases = new Array();
            for (let z in params.Databases) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Databases[z]);
                this.Databases.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalWareList request structure.
 * @class
 */
class DescribeMalWareListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>FilePath - String - required: no - filter by path</li>
<li>VirusName - String - required: no - filter by description</li>
<li>CreateBeginTime - String - required: no - filter by creation time - start time</li>
<li>CreateEndTime - String - required: no - filter by creation time - end time</li>
<li>Status - String - required: no - filter by status: 4 - pending; 5 -- trusted; 6 - isolated; 10 - isolation in progress; 11 - recovering from isolation; 14 - processed</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Detection sorting CreateTime
         * @type {string || null}
         */
        this.By = null;

        /**
         * Sorting method: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.By = 'By' in params ? params.By : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * DescribeProVersionInfo response structure.
 * @class
 */
class DescribeProVersionInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Postpay yesterday's charge
         * @type {number || null}
         */
        this.PostPayCost = null;

        /**
         * Whether the Pro Edition is automatically activated on the new host
         * @type {boolean || null}
         */
        this.IsAutoOpenProVersion = null;

        /**
         * Number of hosts with Pro Edition activated
         * @type {number || null}
         */
        this.ProVersionNum = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PostPayCost = 'PostPayCost' in params ? params.PostPayCost : null;
        this.IsAutoOpenProVersion = 'IsAutoOpenProVersion' in params ? params.IsAutoOpenProVersion : null;
        this.ProVersionNum = 'ProVersionNum' in params ? params.ProVersionNum : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteTags response structure.
 * @class
 */
class DeleteTagsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSecurityEventsCnt request structure.
 * @class
 */
class DescribeSecurityEventsCntRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Resource management account basic information
 * @class
 */
class AssetUserBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Account UID
         * @type {string || null}
         */
        this.Uid = null;

        /**
         * Account GID
         * @type {string || null}
         */
        this.Gid = null;

        /**
         * Account status. 0: disabled; 1: enabled
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether there is root permission. 0: no; 1: yes; 999: null (Linux only)
         * @type {number || null}
         */
        this.IsRoot = null;

        /**
         * Log-in method. 0: log-in not allowed; 1: only key-based log-in allowed; 2: only password-based log-in allowed; 3: both key-based log-in and password-based log-in allowed; 999: null (Linux only)
         * @type {number || null}
         */
        this.LoginType = null;

        /**
         * Last log-in time
         * @type {string || null}
         */
        this.LastLoginTime = null;

        /**
         * Account name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Account type. 0: guest user; 1: standard user; 2: administrator user; 999: null (Windows only)
         * @type {number || null}
         */
        this.UserType = null;

        /**
         * Whether a domain account. 0: no; 1: yes; 2: no; 999: null (Windows only)
         * @type {number || null}
         */
        this.IsDomain = null;

        /**
         * Whether there is sudo permissions: 1: yes; 0: No; 999: null (Linux only)
         * @type {number || null}
         */
        this.IsSudo = null;

        /**
         * Whether ssh log-in allowed. 1: yes; 0: no; 999: null (Linux only)
         * @type {number || null}
         */
        this.IsSshLogin = null;

        /**
         * Home directory
         * @type {string || null}
         */
        this.HomePath = null;

        /**
         * Shell path (Linux only)
         * @type {string || null}
         */
        this.Shell = null;

        /**
         * Whether shell log-in allowed. 0: no; 1: yes (Linux only)
         * @type {number || null}
         */
        this.ShellLoginStatus = null;

        /**
         * Password modification time
         * @type {string || null}
         */
        this.PasswordChangeTime = null;

        /**
         * Password expiration time (Linux only)
         * @type {string || null}
         */
        this.PasswordDueTime = null;

        /**
         * Password locking time (unit: day): -1 - never locked; 999 - null (Linux only)
         * @type {number || null}
         */
        this.PasswordLockDays = null;

        /**
         * Password status: 1 - normal; 2 - expiring soon; 3 - expired; 4 - locked; 999 - null (Linux only)
         * @type {number || null}
         */
        this.PasswordStatus = null;

        /**
         * Update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether new [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uid = 'Uid' in params ? params.Uid : null;
        this.Gid = 'Gid' in params ? params.Gid : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsRoot = 'IsRoot' in params ? params.IsRoot : null;
        this.LoginType = 'LoginType' in params ? params.LoginType : null;
        this.LastLoginTime = 'LastLoginTime' in params ? params.LastLoginTime : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.UserType = 'UserType' in params ? params.UserType : null;
        this.IsDomain = 'IsDomain' in params ? params.IsDomain : null;
        this.IsSudo = 'IsSudo' in params ? params.IsSudo : null;
        this.IsSshLogin = 'IsSshLogin' in params ? params.IsSshLogin : null;
        this.HomePath = 'HomePath' in params ? params.HomePath : null;
        this.Shell = 'Shell' in params ? params.Shell : null;
        this.ShellLoginStatus = 'ShellLoginStatus' in params ? params.ShellLoginStatus : null;
        this.PasswordChangeTime = 'PasswordChangeTime' in params ? params.PasswordChangeTime : null;
        this.PasswordDueTime = 'PasswordDueTime' in params ? params.PasswordDueTime : null;
        this.PasswordLockDays = 'PasswordLockDays' in params ? params.PasswordLockDays : null;
        this.PasswordStatus = 'PasswordStatus' in params ? params.PasswordStatus : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * ModifyRiskEventsStatus request structure.
 * @class
 */
class ModifyRiskEventsStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operations - 0: Mark as Handled, 1: Ignore, 2: Delete Record, 3: Trojan Isolation, 4: Isolated Trojan Resumption, 5: Trojan Trust, 6: Trojan Untrust, 7: Kill Exceptional Process.
         * @type {number || null}
         */
        this.Operate = null;

        /**
         * Operation event types, file scan: MALWARE, exceptional login: HOST_LOGIN, password brute attack: BRUTE_ATTACK, malicious request: MALICIOUS_REQUEST, high-risk command: BASH_EVENT, local privilege escalation: PRIVILEGE_EVENT, reverse shell: REVERSE_SHELL, exceptional process: PROCESS.
         * @type {string || null}
         */
        this.RiskType = null;

        /**
         * An array of event IDs that need to be modified, and batch operation is supported.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Whether to update all, i.e. whether to operate on all events; this parameter is invalid when IDs are not left blank.
         * @type {boolean || null}
         */
        this.UpdateAll = null;

        /**
         * Excluded event ID: When operating on all events, this ID needs to be excluded.
         * @type {Array.<number> || null}
         */
        this.ExcludeId = null;

        /**
         * When Operate is Trojan isolation, it indicates whether to kill the process, other operations are invalid
         * @type {boolean || null}
         */
        this.KillProcess = null;

        /**
         * When RiskType is cross-region log-in and IDs are left blank, you can modify the status of events from all source IPs.
         * @type {Array.<string> || null}
         */
        this.Ip = null;

        /**
         * Filtering criteria. When RiskType is MALWARE.
1. When RiskType is MALWARE:
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>FilePath - String - required: no - filter by path</li>
<li>VirusName - String - required: no - filter by description</li>
<li>CreateBeginTime - String - required: no - filter by creation time - start time</li>
<li>CreateEndTime - String - required: no - filter by creation time - end time</li>
<li>Status - String - required: no - filter by status: 4 - pending; 5 -- trusted; 6 - isolated; 10 - isolation in progress; 11 - recovering from isolation</li>
When RiskType is PROCESS:
Filter criteria
<li>IpOrName - String - required: no - host IP or host name</li>
<li>VirusName - String - required: no - virus name</li>
<li>BeginTime - String - required: no - process startup time - begin</li>
<li>BeginTime - String - required: no - process startup time - end</li>
<li>Status - String - required: no - filter by status: 0 - pending; 1 - under detection; 2 - detected; 3 - exited; 4 - trusted</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Operate = 'Operate' in params ? params.Operate : null;
        this.RiskType = 'RiskType' in params ? params.RiskType : null;
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.UpdateAll = 'UpdateAll' in params ? params.UpdateAll : null;
        this.ExcludeId = 'ExcludeId' in params ? params.ExcludeId : null;
        this.KillProcess = 'KillProcess' in params ? params.KillProcess : null;
        this.Ip = 'Ip' in params ? params.Ip : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportBaselineEffectHostList request structure.
 * @class
 */
class ExportBaselineEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline ID
         * @type {number || null}
         */
        this.BaselineId = null;

        /**
         * Filtering criteria
<li>AliasName - String - host alias</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Host UUID array
         * @type {Array.<string> || null}
         */
        this.UuidList = null;

        /**
         * Baseline name
         * @type {string || null}
         */
        this.BaselineName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BaselineId = 'BaselineId' in params ? params.BaselineId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.UuidList = 'UuidList' in params ? params.UuidList : null;
        this.BaselineName = 'BaselineName' in params ? params.BaselineName : null;

    }
}

/**
 * ExportMaliciousRequests response structure.
 * @class
 */
class ExportMaliciousRequestsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ScanBaseline request structure.
 * @class
 */
class ScanBaselineRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID array (Either StrategyIdList, CategoryIdList, or RuleIdList must be selected.)
         * @type {Array.<number> || null}
         */
        this.StrategyIdList = null;

        /**
         * Baseline ID array (Either StrategyIdList, CategoryIdList, or RuleIdList must be selected.)
         * @type {Array.<number> || null}
         */
        this.CategoryIdList = null;

        /**
         * Detection item ID array (Either StrategyIdList, CategoryIdList, or RuleIdList must be selected.)
         * @type {Array.<number> || null}
         */
        this.RuleIdList = null;

        /**
         * Not required when StrategyIdList is selected, but required in other cases.
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Host UUID array
         * @type {Array.<string> || null}
         */
        this.UuidList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyIdList = 'StrategyIdList' in params ? params.StrategyIdList : null;
        this.CategoryIdList = 'CategoryIdList' in params ? params.CategoryIdList : null;
        this.RuleIdList = 'RuleIdList' in params ? params.RuleIdList : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.UuidList = 'UuidList' in params ? params.UuidList : null;

    }
}

/**
 * RansomDefenseRollback request structure.
 * @class
 */
class RansomDefenseRollbackRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Snapshot time
         * @type {string || null}
         */
        this.BackupTime = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Information about the hard disks that need to be rolled back. Hard disks are directly separated by semicolons (;); blanks are all disks that have been snapshot: disk-id1|disk-name1;disk-id2|disk-name2.
         * @type {string || null}
         */
        this.DiskInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BackupTime = 'BackupTime' in params ? params.BackupTime : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.DiskInfo = 'DiskInfo' in params ? params.DiskInfo : null;

    }
}

/**
 * DescribeVulCountByDates response structure.
 * @class
 */
class DescribeVulCountByDatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Obtain the number of vulnerabilities for corresponding days in batch
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.VulCount = null;

        /**
         * Obtain the number of hosts for corresponding days in batch
         * @type {Array.<number> || null}
         */
        this.HostCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulCount = 'VulCount' in params ? params.VulCount : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Create QUUIDs for fixing tasks
 * @class
 */
class CreateVulFixTaskQuuids extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Hosts that need to fix vulnerabilities. All hosts need to have the vulnerability with the ID of VulId and be in a pending fix status.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * 
         * @type {number || null}
         */
        this.FixMethod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.FixMethod = 'FixMethod' in params ? params.FixMethod : null;

    }
}

/**
 * DescribeServersAndRiskAndFirstInfo request structure.
 * @class
 */
class DescribeServersAndRiskAndFirstInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Quick analysis of statistics data
 * @class
 */
class FieldValueRatioInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Ratio
         * @type {number || null}
         */
        this.Ratio = null;

        /**
         * Value
         * @type {string || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Count = 'Count' in params ? params.Count : null;
        this.Ratio = 'Ratio' in params ? params.Ratio : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * DescribeVulDefenceEvent request structure.
 * @class
 */
class DescribeVulDefenceEventRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Keywords for IP or host name; VulKeywords vulnerability name or CveId for fuzzy query; Quuid, VulId, EventType, Status for precise match; CreateBeginTime, CreateEndTime for time period query
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Data offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Data limit
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method, case insensitive: ASC for ascending order; DESC for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sort columns, which are strictly equal: CreateTime for creation time, MergeTime for merge time, and Count for event count
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Attack backtracking
 * @class
 */
class AttackSource extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack backtracking node description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AttackSourceNode> || null}
         */
        this.Nodes = null;

        /**
         * Attack backtracking node path
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AttackSourceEdge> || null}
         */
        this.Edges = null;

        /**
         * Parameters for requesting details on node-related events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.EventInfoParam = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Nodes) {
            this.Nodes = new Array();
            for (let z in params.Nodes) {
                let obj = new AttackSourceNode();
                obj.deserialize(params.Nodes[z]);
                this.Nodes.push(obj);
            }
        }

        if (params.Edges) {
            this.Edges = new Array();
            for (let z in params.Edges) {
                let obj = new AttackSourceEdge();
                obj.deserialize(params.Edges[z]);
                this.Edges.push(obj);
            }
        }
        this.EventInfoParam = 'EventInfoParam' in params ? params.EventInfoParam : null;

    }
}

/**
 * DescribeIndexList request structure.
 * @class
 */
class DescribeIndexListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * RetryVulFix request structure.
 * @class
 */
class RetryVulFixRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.FixId = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FixId = 'FixId' in params ? params.FixId : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.VulId = 'VulId' in params ? params.VulId : null;

    }
}

/**
 * DescribeRiskDnsEventList request structure.
 * @class
 */
class DescribeRiskDnsEventListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>IpOrName - String - required: no - filter by host IP or alias</li>
<li>HostId - String - required: no - host ID</li>
<li>AgentId - String - required: no - client ID</li>
<li>PolicyType - String - required: no - policy type: 0 - system policy; 1 - user-defined policy</li>
<li>Domain - String - required: no - domain name (First convert the domain name into the urlencode format, and then encode it using base64.)</li>
<li>HandleStatus - String - required: no - filter by status: 0 - pending; 2 - trusted; 3 - untrusted</li>
<li>BeginTime - String - required: no - start time of last access</li>
<li>EndTime - String - required: no - end time of last access</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: sort by number of requests [asc: ascending order|desc: descending order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: [AccessCount: number of requests|LastTime: last request time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeLogKafkaDeliverInfo response structure.
 * @class
 */
class DescribeLogKafkaDeliverInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance environment
         * @type {string || null}
         */
        this.KafkaEnvName = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.KafkaId = null;

        /**
         * Region
         * @type {string || null}
         */
        this.Zone = null;

        /**
         * Availability zone
         * @type {string || null}
         */
        this.Az = null;

        /**
         * Network
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Subnet
         * @type {string || null}
         */
        this.SubnetId = null;

        /**
         * Access method. 1: public network domain name access; 2: support environment access
         * @type {number || null}
         */
        this.AccessType = null;

        /**
         * Access address
         * @type {string || null}
         */
        this.AccessAddr = null;

        /**
         * Shipping status. 1: healthy; 2: alarm; 3: abnormal
         * @type {number || null}
         */
        this.DeliverStatus = null;

        /**
         * Kafka edition
         * @type {string || null}
         */
        this.InsVersion = null;

        /**
         * Peak bandwidth
         * @type {number || null}
         */
        this.BandWidth = null;

        /**
         * Disk capacity
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * xx
         * @type {Array.<DeliverTypeDetails> || null}
         */
        this.DeliverTypeDetails = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.KafkaEnvName = 'KafkaEnvName' in params ? params.KafkaEnvName : null;
        this.KafkaId = 'KafkaId' in params ? params.KafkaId : null;
        this.Zone = 'Zone' in params ? params.Zone : null;
        this.Az = 'Az' in params ? params.Az : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.SubnetId = 'SubnetId' in params ? params.SubnetId : null;
        this.AccessType = 'AccessType' in params ? params.AccessType : null;
        this.AccessAddr = 'AccessAddr' in params ? params.AccessAddr : null;
        this.DeliverStatus = 'DeliverStatus' in params ? params.DeliverStatus : null;
        this.InsVersion = 'InsVersion' in params ? params.InsVersion : null;
        this.BandWidth = 'BandWidth' in params ? params.BandWidth : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.Username = 'Username' in params ? params.Username : null;

        if (params.DeliverTypeDetails) {
            this.DeliverTypeDetails = new Array();
            for (let z in params.DeliverTypeDetails) {
                let obj = new DeliverTypeDetails();
                obj.deserialize(params.DeliverTypeDetails[z]);
                this.DeliverTypeDetails.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteBashRules request structure.
 * @class
 */
class DeleteBashRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array (The maximum number of IDs is 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeVulEffectModules response structure.
 * @class
 */
class DescribeVulEffectModulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of lists
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of affected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulEffectModuleInfo> || null}
         */
        this.VulEffectModuleInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.VulEffectModuleInfo) {
            this.VulEffectModuleInfo = new Array();
            for (let z in params.VulEffectModuleInfo) {
                let obj = new VulEffectModuleInfo();
                obj.deserialize(params.VulEffectModuleInfo[z]);
                this.VulEffectModuleInfo.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseStrategyMachines request structure.
 * @class
 */
class ExportRansomDefenseStrategyMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Ips - String - required: no - query by IP</li>
<li>MachineNames - String - required: no - query by instance name</li>
<li>Names - String - required: no - query by instance name</li>
<li>Status - String - required: no - policy status: 0 - backup in progress; 1 - backup succeeded; 2 - backup failed</li>
<li>LastBackupTimeBegin - String - required: no - start of the last backup time</li>
<li>LastBackupTimeEnd - String - required: no - end of the last backup time</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, supporting CreateTime and MachineCount
         * @type {string || null}
         */
        this.By = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeMalwareWhiteListAffectList response structure.
 * @class
 */
class DescribeMalwareWhiteListAffectListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of events affected by allowlist rules
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MalwareWhiteListAffectEvent> || null}
         */
        this.AffectList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AffectList) {
            this.AffectList = new Array();
            for (let z in params.AffectList) {
                let obj = new MalwareWhiteListAffectEvent();
                obj.deserialize(params.AffectList[z]);
                this.AffectList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Host vulnerability defense plugin information
 * @class
 */
class VulDefencePluginStatus extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host alias
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * Plugin status: 0 - normal; 1 - abnormal
         * @type {number || null}
         */
        this.Exception = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last update time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.Exception = 'Exception' in params ? params.Exception : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * DescribeRansomDefenseEventsList request structure.
 * @class
 */
class DescribeRansomDefenseEventsListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum quantity is 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>HostName- string- host name</li>
<li>Status - Uint64: 0 - pending; 1 processed; 2 -trusted</li>
<li>HostIp - String - host IP</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field, supporting CreateTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Details of Host Backup Bound to Anti-Ransomware Policy
 * @class
 */
class RansomDefenseStrategyMachineBackupInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Cloud tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tag> || null}
         */
        this.CloudTags = null;

        /**
         * Availability zone information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RegionInfo || null}
         */
        this.RegionInfo = null;

        /**
         * CWPP tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Protection status: 0 Disabled, 1 Enabled.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Policy ID. 0 indicates no binding to any policy.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Hard disk information, all hard disks take effect when left blank:
Separate diskId1|diskName1;diskId2|diskName2
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DiskInfo = null;

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Number of Backups
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BackupCount = null;

        /**
         * Latest Backup Status: 0 - Backing Up, 1 - Normal, 2 - Failed, 9 - No Backup Yet
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.LastBackupStatus = null;

        /**
         * Reason for the Last Backup Failure
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastBackupMessage = null;

        /**
         * Last Backup Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastBackupTime = null;

        /**
         * Latest Rollback Progress Percentage
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RollBackPercent = null;

        /**
         * Latest Rollback Status: 0 - In Progress, 1 - Succeeded, 2 - Failed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RollBackStatus = null;

        /**
         * Backup Success Count
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BackupSuccessCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tag();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }

        if (params.RegionInfo) {
            let obj = new RegionInfo();
            obj.deserialize(params.RegionInfo)
            this.RegionInfo = obj;
        }

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.DiskInfo = 'DiskInfo' in params ? params.DiskInfo : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.BackupCount = 'BackupCount' in params ? params.BackupCount : null;
        this.LastBackupStatus = 'LastBackupStatus' in params ? params.LastBackupStatus : null;
        this.LastBackupMessage = 'LastBackupMessage' in params ? params.LastBackupMessage : null;
        this.LastBackupTime = 'LastBackupTime' in params ? params.LastBackupTime : null;
        this.RollBackPercent = 'RollBackPercent' in params ? params.RollBackPercent : null;
        this.RollBackStatus = 'RollBackStatus' in params ? params.RollBackStatus : null;
        this.BackupSuccessCount = 'BackupSuccessCount' in params ? params.BackupSuccessCount : null;

    }
}

/**
 * ExportAssetPlanTaskList response structure.
 * @class
 */
class ExportAssetPlanTaskListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseBackupList request structure.
 * @class
 */
class ExportRansomDefenseBackupListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Status - Int - required: no - query by ransom status: 0 - not ransomed; 1 - ransomed</li>
<li>CreateTimeBegin - string - required: no - start of creation time</li>
<li>CreateTimeEnd - string - required: no - end of creation time</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field, supporting CreateTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeWarningHostConfig response structure.
 * @class
 */
class DescribeWarningHostConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm Host Range Type. 0: All Hosts; 1: By Project; 2: By Tencent Cloud Tag; 3: By Host Security Tag; 4: Custom Hosts
         * @type {number || null}
         */
        this.HostRange = null;

        /**
         * List of Project or Tag Names, empty for custom hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ItemLabels = null;

        /**
         * Machine list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Total Number of Machine Lists
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of Project or Tag IDs, empty for custom hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ItemLabelIds = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.ExcludedQuuids = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostRange = 'HostRange' in params ? params.HostRange : null;
        this.ItemLabels = 'ItemLabels' in params ? params.ItemLabels : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.ItemLabelIds = 'ItemLabelIds' in params ? params.ItemLabelIds : null;
        this.ExcludedQuuids = 'ExcludedQuuids' in params ? params.ExcludedQuuids : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeABTestConfig request structure.
 * @class
 */
class DescribeABTestConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Greyscale project name
         * @type {string || null}
         */
        this.ProjectName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectName = 'ProjectName' in params ? params.ProjectName : null;

    }
}

/**
 * ModifyRansomDefenseEventsStatus request structure.
 * @class
 */
class ModifyRansomDefenseEventsStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * An array of event IDs that need to be modified, and batch operation is supported.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Operations. 0: Pending; 1: Processed; 2: Trusted; 9: Delete Record
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether to update all events with the same path.
         * @type {boolean || null}
         */
        this.All = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.All = 'All' in params ? params.All : null;

    }
}

/**
 * DescribeUsersConfig response structure.
 * @class
 */
class DescribeUsersConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Configuration value
         * @type {string || null}
         */
        this.Value = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Value = 'Value' in params ? params.Value : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackStatistics response structure.
 * @class
 */
class DescribeAttackStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total Number of Attacks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PendingAttackCount = null;

        /**
         * Total Attack Attempts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PendingTryAttackCount = null;

        /**
         * Total Number of Successful Attacks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PendingSuccAttackCount = null;

        /**
         * Number of New Attacks Today
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PendingNewAttackCount = null;

        /**
         * Total Number of Assets Under Attack
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackedAssetCount = null;

        /**
         * Number of New Attacked Assets Today
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NewAttackedAssetCount = null;

        /**
         * Total Number of Attacked Ports
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackedPortCount = null;

        /**
         * Number of New Attacked Ports Today
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NewAttackedPortCount = null;

        /**
         * Total Number of Attack Source IPs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackSrcIpCount = null;

        /**
         * Number of New Attacking Source IPs Today
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NewAttackSrcIpCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PendingAttackCount = 'PendingAttackCount' in params ? params.PendingAttackCount : null;
        this.PendingTryAttackCount = 'PendingTryAttackCount' in params ? params.PendingTryAttackCount : null;
        this.PendingSuccAttackCount = 'PendingSuccAttackCount' in params ? params.PendingSuccAttackCount : null;
        this.PendingNewAttackCount = 'PendingNewAttackCount' in params ? params.PendingNewAttackCount : null;
        this.AttackedAssetCount = 'AttackedAssetCount' in params ? params.AttackedAssetCount : null;
        this.NewAttackedAssetCount = 'NewAttackedAssetCount' in params ? params.NewAttackedAssetCount : null;
        this.AttackedPortCount = 'AttackedPortCount' in params ? params.AttackedPortCount : null;
        this.NewAttackedPortCount = 'NewAttackedPortCount' in params ? params.NewAttackedPortCount : null;
        this.AttackSrcIpCount = 'AttackSrcIpCount' in params ? params.AttackSrcIpCount : null;
        this.NewAttackSrcIpCount = 'NewAttackSrcIpCount' in params ? params.NewAttackSrcIpCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseState request structure.
 * @class
 */
class DescribeRansomDefenseStateRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ExportAssetJarList request structure.
 * @class
 */
class ExportAssetJarListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Name- string - required: no - package name</li>
<li>Type- uint - required: no - type	
1: Application
2: System library
3: Web service built-in library
4: Other dependent packages</li>
<li>Status- string - required: no - whether executable: 0 - no; 1 yes</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * CreateVulFix request structure.
 * @class
 */
class CreateVulFixRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of hosts for which the vulnerability should be fixed
         * @type {Array.<CreateVulFixTaskQuuids> || null}
         */
        this.CreateVulFixTaskQuuids = null;

        /**
         * Snapshot retention days: 0 days indicates that no snapshot will be created. Hosts without a snapshot for 24 hours must have a snapshot created to be restored.
         * @type {number || null}
         */
        this.SaveDays = null;

        /**
         * Snapshot name
         * @type {string || null}
         */
        this.SnapshotName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.CreateVulFixTaskQuuids) {
            this.CreateVulFixTaskQuuids = new Array();
            for (let z in params.CreateVulFixTaskQuuids) {
                let obj = new CreateVulFixTaskQuuids();
                obj.deserialize(params.CreateVulFixTaskQuuids[z]);
                this.CreateVulFixTaskQuuids.push(obj);
            }
        }
        this.SaveDays = 'SaveDays' in params ? params.SaveDays : null;
        this.SnapshotName = 'SnapshotName' in params ? params.SnapshotName : null;

    }
}

/**
 * CheckFirstScanBaseline response structure.
 * @class
 */
class CheckFirstScanBaselineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the first detection: 0 - no; 1 - yes
         * @type {number || null}
         */
        this.FirstScan = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FirstScan = 'FirstScan' in params ? params.FirstScan : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBanStatus request structure.
 * @class
 */
class ModifyBanStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking switch status: 0 -- off; 1 -- advanced blocking; 2 -- basic blocking (Only blocklisted IPs in the intelligence database will be blocked.)
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether to enable intelligent over-allowing mode
         * @type {boolean || null}
         */
        this.OpenSmartMode = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.OpenSmartMode = 'OpenSmartMode' in params ? params.OpenSmartMode : null;

    }
}

/**
 * DescribeBaselineHostTop request structure.
 * @class
 */
class DescribeBaselineHostTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Dynamic top value
         * @type {number || null}
         */
        this.Top = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Top = 'Top' in params ? params.Top : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;

    }
}

/**
 * DescribeVulDefenceList response structure.
 * @class
 */
class DescribeVulDefenceListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of data
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Vulnerability defense list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulDefenceRangeDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulDefenceRangeDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RemoveLocalStorageItem request structure.
 * @class
 */
class RemoveLocalStorageItemRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key
         * @type {string || null}
         */
        this.Key = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;

    }
}

/**
 * CreateBuyBindTask request structure.
 * @class
 */
class CreateBuyBindTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Order Number
         * @type {string || null}
         */
        this.DealName = null;

        /**
         * Optional parameters. 1: Pro Edition-monthly subscription; 2: Ultimate Edition-monthly subscription
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Machine list
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Whether to select all machines
         * @type {boolean || null}
         */
        this.IsAll = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DealName = 'DealName' in params ? params.DealName : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.IsAll = 'IsAll' in params ? params.IsAll : null;

    }
}

/**
 * Add the host information entity of the log-in audit allowlist.
 * @class
 */
class HostInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quuid
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Uuid
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * EditPrivilegeRules response structure.
 * @class
 */
class EditPrivilegeRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulHostTop response structure.
 * @class
 */
class DescribeVulHostTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of top server risks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulHostTopInfo> || null}
         */
        this.VulHostTopList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VulHostTopList) {
            this.VulHostTopList = new Array();
            for (let z in params.VulHostTopList) {
                let obj = new VulHostTopInfo();
                obj.deserialize(params.VulHostTopList[z]);
                this.VulHostTopList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SyncMachines response structure.
 * @class
 */
class SyncMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Enumeration values are (in uppercase): NOTASK (no synchronization task), SYNCING (synchronizing), and FINISHED (synchronization completed)
         * @type {string || null}
         */
        this.State = null;

        /**
         * Latest synchronization start time
         * @type {string || null}
         */
        this.LatestStartTime = null;

        /**
         * Latest synchronization end time
         * @type {string || null}
         */
        this.LatestEndTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.State = 'State' in params ? params.State : null;
        this.LatestStartTime = 'LatestStartTime' in params ? params.LatestStartTime : null;
        this.LatestEndTime = 'LatestEndTime' in params ? params.LatestEndTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * TrustMalwares response structure.
 * @class
 */
class TrustMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeHistoryService request structure.
 * @class
 */
class DescribeHistoryServiceRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * CreateMaliciousRequestWhiteList request structure.
 * @class
 */
class CreateMaliciousRequestWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlisted domain names
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Mark = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Mark = 'Mark' in params ? params.Mark : null;

    }
}

/**
 * DescribeWarningList request structure.
 * @class
 */
class DescribeWarningListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * SyncAssetScan request structure.
 * @class
 */
class SyncAssetScanRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether synchronized: true - yes; false - no; the default is false
         * @type {boolean || null}
         */
        this.Sync = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Sync = 'Sync' in params ? params.Sync : null;

    }
}

/**
 * RecoverMalwares request structure.
 * @class
 */
class RecoverMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan ID array (The maximum number of IDs is 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Default policy basic information
 * @class
 */
class DefaultStrategyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;

    }
}

/**
 * ExportSecurityTrends request structure.
 * @class
 */
class ExportSecurityTrendsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;

    }
}

/**
 * ModifyBanWhiteList request structure.
 * @class
 */
class ModifyBanWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Modify allowlist rule item
         * @type {BanWhiteList || null}
         */
        this.Rules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Rules) {
            let obj = new BanWhiteList();
            obj.deserialize(params.Rules)
            this.Rules = obj;
        }

    }
}

/**
 * DescribeESAggregations request structure.
 * @class
 */
class DescribeESAggregationsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ES aggregation conditional JSON
         * @type {string || null}
         */
        this.Query = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Query = 'Query' in params ? params.Query : null;

    }
}

/**
 * Baseline affected servers list data
 * @class
 */
class BaselineHostTopList extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of event levels and occurrences
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineEventLevelInfo> || null}
         */
        this.EventLevelList = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Score for calculating weight
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Score = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.EventLevelList) {
            this.EventLevelList = new Array();
            for (let z in params.EventLevelList) {
                let obj = new BaselineEventLevelInfo();
                obj.deserialize(params.EventLevelList[z]);
                this.EventLevelList.push(obj);
            }
        }
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Score = 'Score' in params ? params.Score : null;

    }
}

/**
 * DescribeReverseShellRules response structure.
 * @class
 */
class DescribeReverseShellRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List content
         * @type {Array.<ReverseShellRule> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReverseShellRule();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteWebHookRule request structure.
 * @class
 */
class DeleteWebHookRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID list
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeBruteAttackList request structure.
 * @class
 */
class DescribeBruteAttackListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>Uuid - String - required: no - CWPP unique UUID</li>
<li>Quuid - String - required: no - CVM UUID</li>
<li>Status - String - required: no - filter by status: failed - FAILED; succeeded - SUCCESS</li>
<li>UserName - String - required: no - filter by UserName</li>
<li>SrcIp - String - required: no - filter by source IP</li>
<li>CreateBeginTime - String - required: no - filter by first attack time, start time</li>
<li>CreateEndTime - String - required: no - filter by first attack time, end time</li>
<li>ModifyBeginTime - String - required: no - filter by last attack time, start time</li>
<li>ModifyEndTime - String - required: no - filter by last attack time, end time</li>
<li>Banned - String - required: no - filter by blocking status (separate multiple items with commas): 0 - not blocked (global ZK switch is off); 82 - not blocked (Non-Pro Edition); 83 - not blocked (allowlisted); 1 - blocked; 2 - not blocked (abnormal program); 3 - not blocked (private network attacks cannot be blocked); 4 - not blocked (Anping is not supported)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: sort by number of requests: asc - ascending order/desc - descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: CreateTime - first attack time
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVdbAndPocInfo request structure.
 * @class
 */
class DescribeVdbAndPocInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Statistics on top network attacks
 * @class
 */
class NetAttackTopInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top Statistical Data on Network Attack Host Dimension
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TopInfo> || null}
         */
        this.Agent = null;

        /**
         * Top Statistical Data on Network Attack IP Source Dimension
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TopInfo> || null}
         */
        this.SrcIp = null;

        /**
         * Top Statistical Data on Network Attack Target Port Dimension
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TopInfo> || null}
         */
        this.DstPort = null;

        /**
         * Top Statistical Data on Network Attack Vulnerability Dimension
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TopInfo> || null}
         */
        this.Vul = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Agent) {
            this.Agent = new Array();
            for (let z in params.Agent) {
                let obj = new TopInfo();
                obj.deserialize(params.Agent[z]);
                this.Agent.push(obj);
            }
        }

        if (params.SrcIp) {
            this.SrcIp = new Array();
            for (let z in params.SrcIp) {
                let obj = new TopInfo();
                obj.deserialize(params.SrcIp[z]);
                this.SrcIp.push(obj);
            }
        }

        if (params.DstPort) {
            this.DstPort = new Array();
            for (let z in params.DstPort) {
                let obj = new TopInfo();
                obj.deserialize(params.DstPort[z]);
                this.DstPort.push(obj);
            }
        }

        if (params.Vul) {
            this.Vul = new Array();
            for (let z in params.Vul) {
                let obj = new TopInfo();
                obj.deserialize(params.Vul[z]);
                this.Vul.push(obj);
            }
        }

    }
}

/**
 * DescribeVulList response structure.
 * @class
 */
class DescribeVulListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulInfoList> || null}
         */
        this.VulInfoList = null;

        /**
         * Total number of vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total number of focused vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FollowVulCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VulInfoList) {
            this.VulInfoList = new Array();
            for (let z in params.VulInfoList) {
                let obj = new VulInfoList();
                obj.deserialize(params.VulInfoList[z]);
                this.VulInfoList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.FollowVulCount = 'FollowVulCount' in params ? params.FollowVulCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline host information
 * @class
 */
class BaselineHost extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host ID
         * @type {string || null}
         */
        this.HostId = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostTag = null;

        /**
         * Private IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostId = 'HostId' in params ? params.HostId : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostTag = 'HostTag' in params ? params.HostTag : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * KeysLocalStorage request structure.
 * @class
 */
class KeysLocalStorageRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeUndoVulCounts request structure.
 * @class
 */
class DescribeUndoVulCountsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability category. 1: web-cms vulnerabilities; 2: application vulnerabilities; 4: Linux software vulnerabilities; 5: Windows system vulnerabilities
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Whether to apply emergency vulnerability detection: YES - yes
         * @type {string || null}
         */
        this.IfEmergency = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.IfEmergency = 'IfEmergency' in params ? params.IfEmergency : null;

    }
}

/**
 * RemoveMachine request structure.
 * @class
 */
class RemoveMachineRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * ModifyLicenseBinds response structure.
 * @class
 */
class ModifyLicenseBindsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CheckFileTamperRule request structure.
 * @class
 */
class CheckFileTamperRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of rule to be entered
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Rule ID passed during editing
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeBaselineStrategyList response structure.
 * @class
 */
class DescribeBaselineStrategyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * User policy information list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Strategy> || null}
         */
        this.StrategyList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.StrategyList) {
            this.StrategyList = new Array();
            for (let z in params.StrategyList) {
                let obj = new Strategy();
                obj.deserialize(params.StrategyList[z]);
                this.StrategyList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateRansomDefenseStrategy request structure.
 * @class
 */
class CreateRansomDefenseStrategyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Scheduled snapshot execution time (0-23): 01:00; 23:00.
         * @type {string || null}
         */
        this.Hour = null;

        /**
         * Policy ID: Modify the policy when filling in the ID. Otherwise, add a new policy.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Policy Remarks
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Whether to enable: 0 Off, 1 On.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Apply to all machines or not. 0: No; 1: Yes
         * @type {number || null}
         */
        this.IsAll = null;

        /**
         * Include directories, separated by semicolons (;).
         * @type {string || null}
         */
        this.IncludeDir = null;

        /**
         * Exclude directories, separated by semicolons (;).
         * @type {string || null}
         */
        this.ExcludeDir = null;

        /**
         * Backup pattern: 0 weekly, 1 daily.
         * @type {number || null}
         */
        this.BackupType = null;

        /**
         * Scheduled task execution days in a week (1-7): 1; 2; 7.
         * @type {string || null}
         */
        this.Weekday = null;

        /**
         * Retention Period: 0 Permanent.
         * @type {number || null}
         */
        this.SaveDay = null;

        /**
         * Bound Host List
         * @type {Array.<RansomDefenseStrategyMachineInfo> || null}
         */
        this.Machines = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Hour = 'Hour' in params ? params.Hour : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsAll = 'IsAll' in params ? params.IsAll : null;
        this.IncludeDir = 'IncludeDir' in params ? params.IncludeDir : null;
        this.ExcludeDir = 'ExcludeDir' in params ? params.ExcludeDir : null;
        this.BackupType = 'BackupType' in params ? params.BackupType : null;
        this.Weekday = 'Weekday' in params ? params.Weekday : null;
        this.SaveDay = 'SaveDay' in params ? params.SaveDay : null;

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new RansomDefenseStrategyMachineInfo();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }

    }
}

/**
 * DeleteLoginWhiteList request structure.
 * @class
 */
class DeleteLoginWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlisted IDs (The maximum number is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeLicenseList request structure.
 * @class
 */
class DescribeLicenseListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Take the intersection when filtering with multiple conditions.
<li> LicenseStatus authorization status information: 0 - not used; 1 - partially used; 2 - used up; 3 - unavailable; 4 - available</li>
<li> BuyTime: time of purchase</li>
<li> LicenseType authorization type. 0: Pro Edition-pay-as-you-go; 1: Pro Edition-monthly subscription; 2: Ultimate Edition-monthly subscription</li>
<li>DeadlineStatus expiration status: NotExpired -not expired; expire - expired (including terminated); nearexpiry - about to expire</li>
<li>ResourceId resource ID</li>
<li>Keywords IP filtering</li>
<li>PayMode payment mode. 0: pay-as-you-go; 1: monthly subscription</li>
<li>OrderStatus order status. 1: normal; 2: isolated; 3: terminated</li>
<li>DealNames sub-order number, with a maximum length of 10, exceeding this will result in a failure.</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Limit number, 10 by default.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Tag filtering; filter by the platform's tag capabilities. In this case, you should pass in the tag key and tag value as an object.
         * @type {Array.<Tags> || null}
         */
        this.Tags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new Tags();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }

    }
}

/**
 * CreateMalwareWhiteList request structure.
 * @class
 */
class CreateMalwareWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist mode. 0: MD5 allowlist; 1: customization
         * @type {number || null}
         */
        this.Mode = null;

        /**
         * QUUID list
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Whether applies all hosts. 0: no; 1: yes
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Matching pattern; 0 for exact match, 1 for fuzzy match (deprecated).
         * @type {number || null}
         */
        this.MatchType = null;

        /**
         * File Name (regular expression); up to 200 characters in length
         * @type {Array.<string> || null}
         */
        this.FileName = null;

        /**
         * File Directory (regular expression); up to 200 characters in length, content base64 encoded.
         * @type {Array.<string> || null}
         */
        this.FileDirectory = null;

        /**
         * File Suffix; Up to 200 characters in length, content base64 escaped (deprecated)
         * @type {Array.<string> || null}
         */
        this.FileExtension = null;

        /**
         * MD5 list
         * @type {Array.<string> || null}
         */
        this.Md5List = null;

        /**
         * Trojan event ID
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * 
         * @type {number || null}
         */
        this.IsHandleHistoryEvents = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.MatchType = 'MatchType' in params ? params.MatchType : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileDirectory = 'FileDirectory' in params ? params.FileDirectory : null;
        this.FileExtension = 'FileExtension' in params ? params.FileExtension : null;
        this.Md5List = 'Md5List' in params ? params.Md5List : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.IsHandleHistoryEvents = 'IsHandleHistoryEvents' in params ? params.IsHandleHistoryEvents : null;

    }
}

/**
 * ExportAssetWebLocationList request structure.
 * @class
 */
class ExportAssetWebLocationListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - required: no - domain name</li>
<li>User - String - required: no - running user</li>
<li>Port - uint64 - required: no - site port</li>
<li>Proto - uint64 - required: no - site protocol: 1 - HTTP; 2 - HTTPS</li>
<li>ServiceType - uint64 - required: no - service type:
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FirstTime|PathCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVulOverview response structure.
 * @class
 */
class DescribeVulOverviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistics on focused vulnerabilities
         * @type {VulOverview || null}
         */
        this.FollowVul = null;

        /**
         * Statistics on all vulnerabilities
         * @type {VulOverview || null}
         */
        this.AllVul = null;

        /**
         * Statistics on affected hosts
         * @type {VulOverview || null}
         */
        this.EffectHost = null;

        /**
         * Statistics on vulnerability attack event (past 1 month)
         * @type {VulOverview || null}
         */
        this.VulAttackEvent = null;

        /**
         * Statistics on defended attacks (past 1 month)
         * @type {VulOverview || null}
         */
        this.VulDefenceEvent = null;

        /**
         * Vulnerability database statistics
         * @type {VulOverview || null}
         */
        this.VulStore = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FollowVul) {
            let obj = new VulOverview();
            obj.deserialize(params.FollowVul)
            this.FollowVul = obj;
        }

        if (params.AllVul) {
            let obj = new VulOverview();
            obj.deserialize(params.AllVul)
            this.AllVul = obj;
        }

        if (params.EffectHost) {
            let obj = new VulOverview();
            obj.deserialize(params.EffectHost)
            this.EffectHost = obj;
        }

        if (params.VulAttackEvent) {
            let obj = new VulOverview();
            obj.deserialize(params.VulAttackEvent)
            this.VulAttackEvent = obj;
        }

        if (params.VulDefenceEvent) {
            let obj = new VulOverview();
            obj.deserialize(params.VulDefenceEvent)
            this.VulDefenceEvent = obj;
        }

        if (params.VulStore) {
            let obj = new VulOverview();
            obj.deserialize(params.VulStore)
            this.VulStore = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Attack backtracking path description
 * @class
 */
class AttackSourceEdge extends  AbstractModel {
    constructor(){
        super();

        /**
         * Starting node
         * @type {string || null}
         */
        this.From = null;

        /**
         * Target node
         * @type {string || null}
         */
        this.To = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.From = 'From' in params ? params.From : null;
        this.To = 'To' in params ? params.To : null;

    }
}

/**
 * DeleteMaliciousRequests request structure.
 * @class
 */
class DeleteMaliciousRequestsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request record ID array (The maximum number of IDs is 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeBanWhiteList request structure.
 * @class
 */
class DescribeBanWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Quantity of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - query by keywords</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Fix vulnerability second popup in batch
 * @class
 */
class VulInfoHostInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * 0 - the vulnerability cannot be fixed automatically; 1 - the vulnerability can be fixed automatically; 2 - the client has been offline; 3 - the host is not the ultimate edition and can only be fixed manually; 4 - the model does not allow automatic fix; 5 - fixing; 6 - fixed; 7 - under detection; 9 - fix failed; 10 - ignored; 11 - the vulnerability is supported only on Linux, not on Windows; 12 - the vulnerability is supported only on Windows, not on Linux.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsSupportAutoFix = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host InstanceId
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.IsSupportAutoFix = 'IsSupportAutoFix' in params ? params.IsSupportAutoFix : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;

    }
}

/**
 * DescribeJavaMemShellPluginList response structure.
 * @class
 */
class DescribeJavaMemShellPluginListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Java Memory Trojan Plugin List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<JavaMemShellPluginSetting> || null}
         */
        this.List = null;

        /**
         * Total
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new JavaMemShellPluginSetting();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLogKafkaState response structure.
 * @class
 */
class ModifyLogKafkaStateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline policy information
 * @class
 */
class BaselinePolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name, which is no more than 128 English characters in length.
         * @type {string || null}
         */
        this.PolicyName = null;

        /**
         * Detection interval [1: 1 day|3: 3 days|5: 5 days|7: 7 days]
         * @type {number || null}
         */
        this.DetectInterval = null;

        /**
         * Detection time
         * @type {string || null}
         */
        this.DetectTime = null;

        /**
         * Whether enabled [0: not enabled|1: enabled]
         * @type {number || null}
         */
        this.IsEnabled = null;

        /**
         * Asset type [0: all Professional and Ultimate editions|1: ID | 2: IP]
         * @type {number || null}
         */
        this.AssetType = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.PolicyId = null;

        /**
         * Number of associated baseline items
         * @type {number || null}
         */
        this.RuleCount = null;

        /**
         * Number of associated baseline items
         * @type {number || null}
         */
        this.ItemCount = null;

        /**
         * Number of associated baseline hosts
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Rule ID
         * @type {Array.<number> || null}
         */
        this.RuleIds = null;

        /**
         * Host ID
         * @type {Array.<string> || null}
         */
        this.HostIds = null;

        /**
         * Host IP
         * @type {Array.<string> || null}
         */
        this.HostIps = null;

        /**
         * Whether the system default
         * @type {number || null}
         */
        this.IsDefault = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyName = 'PolicyName' in params ? params.PolicyName : null;
        this.DetectInterval = 'DetectInterval' in params ? params.DetectInterval : null;
        this.DetectTime = 'DetectTime' in params ? params.DetectTime : null;
        this.IsEnabled = 'IsEnabled' in params ? params.IsEnabled : null;
        this.AssetType = 'AssetType' in params ? params.AssetType : null;
        this.PolicyId = 'PolicyId' in params ? params.PolicyId : null;
        this.RuleCount = 'RuleCount' in params ? params.RuleCount : null;
        this.ItemCount = 'ItemCount' in params ? params.ItemCount : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.RuleIds = 'RuleIds' in params ? params.RuleIds : null;
        this.HostIds = 'HostIds' in params ? params.HostIds : null;
        this.HostIps = 'HostIps' in params ? params.HostIps : null;
        this.IsDefault = 'IsDefault' in params ? params.IsDefault : null;

    }
}

/**
 * DescribeMalwareRiskOverview response structure.
 * @class
 */
class DescribeMalwareRiskOverviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * None
         * @type {MalwareRiskOverview || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new MalwareRiskOverview();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteMaliciousRequestWhiteList response structure.
 * @class
 */
class DeleteMaliciousRequestWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeJavaMemShellList request structure.
 * @class
 */
class DescribeJavaMemShellListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Keywords: IP or host name for fuzzy query; Type or status for precise match; CreateBeginTime, CreateEndTime for time period query
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * SwitchBashRules request structure.
 * @class
 */
class SwitchBashRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Whether to disable
         * @type {number || null}
         */
        this.Disabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Disabled = 'Disabled' in params ? params.Disabled : null;

    }
}

/**
 * DescribeAgentInstallationToken response structure.
 * @class
 */
class DescribeAgentInstallationTokenResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Installation command token
         * @type {string || null}
         */
        this.Token = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Token = 'Token' in params ? params.Token : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Visualized emergency notification on the large screen
 * @class
 */
class ScreenEmergentMsg extends  AbstractModel {
    constructor(){
        super();

        /**
         * Notification tag/title
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Notification content
         * @type {string || null}
         */
        this.Text = null;

        /**
         * Redirection type: 0=vulnerability management
         * @type {number || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Title = 'Title' in params ? params.Title : null;
        this.Text = 'Text' in params ? params.Text : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * DescribeAssetMachineTagTop response structure.
 * @class
 */
class DescribeAssetMachineTagTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top 5 tags along with their counts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Tags = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateScanMalwareSetting response structure.
 * @class
 */
class CreateScanMalwareSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseTrend response structure.
 * @class
 */
class DescribeRansomDefenseTrendResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of Ransom Incidents
         * @type {number || null}
         */
        this.EventCount = null;

        /**
         * Number of Affected Industries
         * @type {number || null}
         */
        this.IndustryCount = null;

        /**
         * Number of Companies with Ransom Protection
         * @type {number || null}
         */
        this.CompanyCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventCount = 'EventCount' in params ? params.EventCount : null;
        this.IndustryCount = 'IndustryCount' in params ? params.IndustryCount : null;
        this.CompanyCount = 'CompanyCount' in params ? params.CompanyCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CKafka instance information
 * @class
 */
class CKafkaInstanceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance ID
         * @type {string || null}
         */
        this.InstanceID = null;

        /**
         * Instance name
         * @type {string || null}
         */
        this.InstanceName = null;

        /**
         * Version No.
         * @type {string || null}
         */
        this.KafkaVersion = null;

        /**
         * Topic list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<CKafkaTopicInfo> || null}
         */
        this.TopicList = null;

        /**
         * Routing List
         * @type {Array.<CKafkaRouteInfo> || null}
         */
        this.RouteList = null;

        /**
         * Disk capacity (unit: GB)
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * vpcId. Leaving it blank indicates a basic network.
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Subnet ID
         * @type {string || null}
         */
        this.SubnetId = null;

        /**
         * Status: 1 - healthy; 2 - alarm; 3 - abnormal instance status
         * @type {number || null}
         */
        this.Healthy = null;

        /**
         * Availability zone
         * @type {string || null}
         */
        this.Zone = null;

        /**
         * Region
         * @type {string || null}
         */
        this.Az = null;

        /**
         * Instance bandwidth (unit: Mbps)
         * @type {number || null}
         */
        this.Bandwidth = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InstanceID = 'InstanceID' in params ? params.InstanceID : null;
        this.InstanceName = 'InstanceName' in params ? params.InstanceName : null;
        this.KafkaVersion = 'KafkaVersion' in params ? params.KafkaVersion : null;

        if (params.TopicList) {
            this.TopicList = new Array();
            for (let z in params.TopicList) {
                let obj = new CKafkaTopicInfo();
                obj.deserialize(params.TopicList[z]);
                this.TopicList.push(obj);
            }
        }

        if (params.RouteList) {
            this.RouteList = new Array();
            for (let z in params.RouteList) {
                let obj = new CKafkaRouteInfo();
                obj.deserialize(params.RouteList[z]);
                this.RouteList.push(obj);
            }
        }
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.SubnetId = 'SubnetId' in params ? params.SubnetId : null;
        this.Healthy = 'Healthy' in params ? params.Healthy : null;
        this.Zone = 'Zone' in params ? params.Zone : null;
        this.Az = 'Az' in params ? params.Az : null;
        this.Bandwidth = 'Bandwidth' in params ? params.Bandwidth : null;

    }
}

/**
 * Resource management Web application list information
 * @class
 */
class AssetWebFrameBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Database name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Language
         * @type {string || null}
         */
        this.Lang = null;

        /**
         * Service type
         * @type {string || null}
         */
        this.ServiceType = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Data update time
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether new [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Application path
         * @type {string || null}
         */
        this.Path = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Lang = 'Lang' in params ? params.Lang : null;
        this.ServiceType = 'ServiceType' in params ? params.ServiceType : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Path = 'Path' in params ? params.Path : null;

    }
}

/**
 * ModifyJavaMemShellsStatus request structure.
 * @class
 */
class ModifyJavaMemShellsStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Target Processing Status: 0 - Pending, 1 - Allowlisted, 2 - Deleted, 3 - Ignored, 4 - Manually Processed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Event ID Array
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeFileTamperRuleInfo request structure.
 * @class
 */
class DescribeFileTamperRuleInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Control the number of UUIDs returned
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Control the number of UUIDs returned, starting position
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * ExportAttackEvents request structure.
 * @class
 */
class ExportAttackEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>FilePath - String - required: no - filter by path</li>
<li>VirusName - String - required: no - filter by description</li>
<li>CreateBeginTime - String - required: no - filter by creation time - start time</li>
<li>CreateEndTime - String - required: no - filter by creation time - end time</li>
<li>Status - String - required: no - filter by status</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting value: CreateTime
         * @type {string || null}
         */
        this.By = null;

        /**
         * Sorting method: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.By = 'By' in params ? params.By : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * ModifyAutoOpenProVersionConfig request structure.
 * @class
 */
class ModifyAutoOpenProVersionConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Set the auto-activation status.
<li>CLOSE: off</li>
<li>OPEN: on</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Automatic purchase/expansion authorization switch, 1 by default, 0 for OFF, 1 for ON.
         * @type {number || null}
         */
        this.AutoRepurchaseSwitch = null;

        /**
         * Auto-renewal or not for auto-purchased orders, 0 by default, 0 for OFF, 1 for ON
         * @type {number || null}
         */
        this.AutoRepurchaseRenewSwitch = null;

        /**
         * Whether the manually purchased order is automatically renewed (defaults to 0): 0 - off; 1 - on
         * @type {number || null}
         */
        this.RepurchaseRenewSwitch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.AutoRepurchaseSwitch = 'AutoRepurchaseSwitch' in params ? params.AutoRepurchaseSwitch : null;
        this.AutoRepurchaseRenewSwitch = 'AutoRepurchaseRenewSwitch' in params ? params.AutoRepurchaseRenewSwitch : null;
        this.RepurchaseRenewSwitch = 'RepurchaseRenewSwitch' in params ? params.RepurchaseRenewSwitch : null;

    }
}

/**
 * DescribeLogDeliveryKafkaOptions request structure.
 * @class
 */
class DescribeLogDeliveryKafkaOptionsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Kafka instance ID
         * @type {string || null}
         */
        this.InstanceID = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InstanceID = 'InstanceID' in params ? params.InstanceID : null;

    }
}

/**
 * DescribeAssetWebLocationInfo response structure.
 * @class
 */
class DescribeAssetWebLocationInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Site information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AssetWebLocationInfo || null}
         */
        this.WebLocation = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebLocation) {
            let obj = new AssetWebLocationInfo();
            obj.deserialize(params.WebLocation)
            this.WebLocation = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateIncidentBacktracking response structure.
 * @class
 */
class CreateIncidentBacktrackingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Abnormal Process Event
 * @class
 */
class RiskProcessEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * Process ID
         * @type {number || null}
         */
        this.ProcessId = null;

        /**
         * File path
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * Executed commands
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * Process startup time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Last detection time
         * @type {string || null}
         */
        this.DetectTime = null;

        /**
         * Virus name
         * @type {string || null}
         */
        this.VirusName = null;

        /**
         * Trojan detection platform [1: Cloud search engine |2:TAV | 3: Binary Ai | 4: Abnormal behavior | 5: threat intelligence]
         * @type {Array.<string> || null}
         */
        this.CheckPlatform = null;

        /**
         * Virus tag
         * @type {Array.<string> || null}
         */
        this.VirusTags = null;

        /**
         * Threat description
         * @type {string || null}
         */
        this.ThreatDesc = null;

        /**
         * Recommended solution
         * @type {string || null}
         */
        this.SuggestSolution = null;

        /**
         * Reference link
         * @type {string || null}
         */
        this.ReferenceLink = null;

        /**
         * Processing Status [0 Pending; 1 Processed; 2 Scanning; 3 Scanned; 4 Exited; 5 Ignore]
         * @type {number || null}
         */
        this.HandleStatus = null;

        /**
         * Host Online Status
         * @type {number || null}
         */
        this.OnlineStatus = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;
        this.ProcessId = 'ProcessId' in params ? params.ProcessId : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.DetectTime = 'DetectTime' in params ? params.DetectTime : null;
        this.VirusName = 'VirusName' in params ? params.VirusName : null;
        this.CheckPlatform = 'CheckPlatform' in params ? params.CheckPlatform : null;
        this.VirusTags = 'VirusTags' in params ? params.VirusTags : null;
        this.ThreatDesc = 'ThreatDesc' in params ? params.ThreatDesc : null;
        this.SuggestSolution = 'SuggestSolution' in params ? params.SuggestSolution : null;
        this.ReferenceLink = 'ReferenceLink' in params ? params.ReferenceLink : null;
        this.HandleStatus = 'HandleStatus' in params ? params.HandleStatus : null;
        this.OnlineStatus = 'OnlineStatus' in params ? params.OnlineStatus : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * ExportVulList request structure.
 * @class
 */
class ExportVulListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>VulCategory - int - required: no - filter by vulnerability category: 1 - web-cms vulnerabilities; 2 - application vulnerabilities; 4 - Linux software vulnerabilities; 5 - Windows system vulnerabilities</li>
<li>IfEmergency - String - required: no - whether an emergency vulnerability; if you need to query an emergency vulnerability, please pass yes to this parameter.</li>
<li>Status - String - required: yes - filter by vulnerability status: 0 - pending; 1 - ignored; 3 - fixed; 5 - detecting. The console only handles four statuses: 0, 1, 3, and 5.</li>
<li>Level - String - required: no - filter by vulnerability level: 1 - low; 2 - medium; 3 - high; 4 - prompt</li>
<li>VulName - String - required: no - search by vulnerability name</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Whether to export details: 1 - yes; 0 - no
         * @type {number || null}
         */
        this.IfDetail = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.IfDetail = 'IfDetail' in params ? params.IfDetail : null;

    }
}

/**
 * ModifyBashPolicy response structure.
 * @class
 */
class ModifyBashPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportLicenseDetail request structure.
 * @class
 */
class ExportLicenseDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Take the intersection when filtering with multiple conditions: LicenseStatus, DeadlineStatus, ResourceId, and Keywords
<li> LicenseType authorization type. 0: Pro Edition-pay-as-you-go; 1: Pro Edition-monthly subscription; 2: Ultimate Edition-monthly subscription</li>
<li>ResourceId resource ID</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Whether to export all authorization details
         * @type {boolean || null}
         */
        this.IsHistory = null;

        /**
         * Tag filtering; filter by the platform's tag capabilities. In this case, you should pass in the tag key and tag value as an object.
         * @type {Array.<Tags> || null}
         */
        this.Tags = null;

        /**
         * Export month, this parameter is optional only when IsHistory is active.
         * @type {string || null}
         */
        this.ExportMonth = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.IsHistory = 'IsHistory' in params ? params.IsHistory : null;

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new Tags();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }
        this.ExportMonth = 'ExportMonth' in params ? params.ExportMonth : null;

    }
}

/**
 * [Cloud security alarm] Visualized data Name Value Data on the large screen
 * @class
 */
class ScreenNameValue extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistics type: Different APIs correspond to different content
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Statistics quantity
         * @type {number || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * CreateLicenseOrder request structure.
 * @class
 */
class CreateLicenseOrderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag array. Leaving it blank indicates no tags need to be bound.
         * @type {Array.<Tags> || null}
         */
        this.Tags = null;

        /**
         * Authorization type. 0: Pro Edition-pay-as-you-go; 1: Pro Edition-monthly subscription; 2 - Ultimate Edition-monthly subscriptionThe default is 0.
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Authorization quantity: the number of units that need to be purchased
The default is 1.
         * @type {number || null}
         */
        this.LicenseNum = null;

        /**
         * Region of purchase order. In this case, only 1 - Guangzhou and 9 - Singapore are supported. Guangzhou is recommended. Singapore region is reserved for allowlisted users.
The default is 1.
         * @type {number || null}
         */
        this.RegionId = null;

        /**
         * Project ID
The default is 0.
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Purchase duration, with a default value of 1. The optional values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36
This parameter is only valid for monthly subscription.
         * @type {number || null}
         */
        this.TimeSpan = null;

        /**
         * Whether to auto-renew. The default is not to auto-renew.
This parameter is only valid for monthly subscription.
         * @type {boolean || null}
         */
        this.AutoRenewFlag = null;

        /**
         * This field is deprecated.
         * @type {string || null}
         */
        this.AutoProtectOpenConfig = null;

        /**
         * Reconfiguration Parameters
         * @type {OrderModifyObject || null}
         */
        this.ModifyConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new Tags();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.LicenseNum = 'LicenseNum' in params ? params.LicenseNum : null;
        this.RegionId = 'RegionId' in params ? params.RegionId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TimeSpan = 'TimeSpan' in params ? params.TimeSpan : null;
        this.AutoRenewFlag = 'AutoRenewFlag' in params ? params.AutoRenewFlag : null;
        this.AutoProtectOpenConfig = 'AutoProtectOpenConfig' in params ? params.AutoProtectOpenConfig : null;

        if (params.ModifyConfig) {
            let obj = new OrderModifyObject();
            obj.deserialize(params.ModifyConfig)
            this.ModifyConfig = obj;
        }

    }
}

/**
 * CreateNetAttackWhiteList response structure.
 * @class
 */
class CreateNetAttackWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateLogExport response structure.
 * @class
 */
class CreateLogExportResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID of exported logs
         * @type {string || null}
         */
        this.ExportId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExportId = 'ExportId' in params ? params.ExportId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Expert service - emergency response information
 * @class
 */
class EmergencyResponseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.HostNum = null;

        /**
         * 
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Service start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Service end time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Report download link
         * @type {string || null}
         */
        this.ReportPath = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.HostNum = 'HostNum' in params ? params.HostNum : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ReportPath = 'ReportPath' in params ? params.ReportPath : null;

    }
}

/**
 * ExportVulDefenceList response structure.
 * @class
 */
class ExportVulDefenceListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export file ID, which is downloadable via the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLogKafkaDeliverType response structure.
 * @class
 */
class ModifyLogKafkaDeliverTypeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineScanSchedule request structure.
 * @class
 */
class DescribeBaselineScanScheduleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * RetryCreateSnapshot request structure.
 * @class
 */
class RetryCreateSnapshotRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Fix task ID
         * @type {number || null}
         */
        this.FixId = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Unique ID of the snapshot returned by the task progress
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FixId = 'FixId' in params ? params.FixId : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ExportVulDefenceEvent request structure.
 * @class
 */
class ExportVulDefenceEventRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Keywords for IP or host name; VulKeywords vulnerability name or CveId for fuzzy query; Quuid, VulId, EventType, Status for precise match; CreateBeginTime, CreateEndTime for time period query
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Export fields and export all by default.
         * @type {Array.<string> || null}
         */
        this.Where = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Where = 'Where' in params ? params.Where : null;

    }
}

/**
 * The TagList node in the data HostList corresponding to the host list query API
 * @class
 */
class RansomDefenseStrategyDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Operating UIN
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uin = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Policy Remarks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Enabling Status: 0 Disabled, 1 Enabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether it takes effect for all hosts.
         * @type {number || null}
         */
        this.IsAll = null;

        /**
         * Includes directories, separated by semicolons (;).
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.IncludeDir = null;

        /**
         * Includes directories, separated by semicolons (;).
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ExcludeDir = null;

        /**
         * Backup pattern: 0 weekly, 1 daily.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BackupType = null;

        /**
         * Backup days in a week (1-7): 1; 2; 3; 4.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Weekday = null;

        /**
         * Backup Execution Time Point (0-23): 11:00; 12:00
         * @type {string || null}
         */
        this.Hour = null;

        /**
         * Storage Days, 0 for Permanent
         * @type {number || null}
         */
        this.SaveDay = null;

        /**
         * Creation time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modification time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Number of Bound Machines
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MachineCount = null;

        /**
         * Policy Associated Event Count
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uin = 'Uin' in params ? params.Uin : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsAll = 'IsAll' in params ? params.IsAll : null;
        this.IncludeDir = 'IncludeDir' in params ? params.IncludeDir : null;
        this.ExcludeDir = 'ExcludeDir' in params ? params.ExcludeDir : null;
        this.BackupType = 'BackupType' in params ? params.BackupType : null;
        this.Weekday = 'Weekday' in params ? params.Weekday : null;
        this.Hour = 'Hour' in params ? params.Hour : null;
        this.SaveDay = 'SaveDay' in params ? params.SaveDay : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.MachineCount = 'MachineCount' in params ? params.MachineCount : null;
        this.EventCount = 'EventCount' in params ? params.EventCount : null;

    }
}

/**
 * DescribeEmergencyVulList response structure.
 * @class
 */
class DescribeEmergencyVulListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<EmergencyVul> || null}
         */
        this.List = null;

        /**
         * Total number of vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Whether there is any risk
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.ExistsRisk = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new EmergencyVul();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.ExistsRisk = 'ExistsRisk' in params ? params.ExistsRisk : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DestroyOrder response structure.
 * @class
 */
class DestroyOrderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetUserList response structure.
 * @class
 */
class DescribeAssetUserListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Account list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetUserBaseInfo> || null}
         */
        this.Users = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Users) {
            this.Users = new Array();
            for (let z in params.Users) {
                let obj = new AssetUserBaseInfo();
                obj.deserialize(params.Users[z]);
                this.Users.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Blocking configuration in the standard mode
 * @class
 */
class StandardModeConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking duration (unit: second)
         * @type {number || null}
         */
        this.Ttl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ttl = 'Ttl' in params ? params.Ttl : null;

    }
}

/**
 * High-risk command data
 * @class
 */
class BashEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.Hostip = null;

        /**
         * Username for execution
         * @type {string || null}
         */
        this.User = null;

        /**
         * Platform type
         * @type {number || null}
         */
        this.Platform = null;

        /**
         * Executed commands
         * @type {string || null}
         */
        this.BashCmd = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Rule level: 1 - high-risk 2 - medium-risk; 3 - low-risk
         * @type {number || null}
         */
        this.RuleLevel = null;

        /**
         * Processing status: 0 - pending; 1 - processed; 2 - allowlisted; 3 - ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * 0: bash log; 1: real-time monitoring (thunder edition)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DetectBy = null;

        /**
         * Process ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * Process name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Exe = null;

        /**
         * Processing time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Rule category: 0 - system rule; 1 - user rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Automatically generated regular expression\nNote: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RegexBashCmd = null;

        /**
         * Host HostName
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Hostip = 'Hostip' in params ? params.Hostip : null;
        this.User = 'User' in params ? params.User : null;
        this.Platform = 'Platform' in params ? params.Platform : null;
        this.BashCmd = 'BashCmd' in params ? params.BashCmd : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.RuleLevel = 'RuleLevel' in params ? params.RuleLevel : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.Exe = 'Exe' in params ? params.Exe : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.RegexBashCmd = 'RegexBashCmd' in params ? params.RegexBashCmd : null;
        this.HostName = 'HostName' in params ? params.HostName : null;

    }
}

/**
 * DeleteMalwares request structure.
 * @class
 */
class DeleteMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan record ID array (The maximum number of IDs is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * RecoverMalwares response structure.
 * @class
 */
class RecoverMalwaresResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * An array of IDs for successfully recovered items; if none, an empty array is returned.
         * @type {Array.<number> || null}
         */
        this.SuccessIds = null;

        /**
         * An array of IDs for items that failed to be recovered; if none, an empty array is returned.
         * @type {Array.<number> || null}
         */
        this.FailedIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SuccessIds = 'SuccessIds' in params ? params.SuccessIds : null;
        this.FailedIds = 'FailedIds' in params ? params.FailedIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Region information
 * @class
 */
class RegionSet extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region name
         * @type {string || null}
         */
        this.RegionName = null;

        /**
         * AZ information
         * @type {Array.<ZoneInfo> || null}
         */
        this.ZoneSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RegionName = 'RegionName' in params ? params.RegionName : null;

        if (params.ZoneSet) {
            this.ZoneSet = new Array();
            for (let z in params.ZoneSet) {
                let obj = new ZoneInfo();
                obj.deserialize(params.ZoneSet[z]);
                this.ZoneSet.push(obj);
            }
        }

    }
}

/**
 * Enterprise WeChat Robot Host Range
 * @class
 */
class WebHookHostLabel extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host Range [1: Project |2: Tencent Cloud Tag | 3: Host Security Tag | 4: Optional] Empty array means all.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Host Project or Tag Content
         * @type {Array.<string> || null}
         */
        this.Values = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Values = 'Values' in params ? params.Values : null;

    }
}

/**
 * The TagList node in the data HostList corresponding to the host list query API
 * @class
 */
class RansomDefenseStrategy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Operating UIN
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uin = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Policy Remarks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Enabling Status: 0 Disabled, 1 Enabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether it takes effect for all hosts.
         * @type {number || null}
         */
        this.IsAll = null;

        /**
         * Includes directories, separated by semicolons (;).
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.IncludeDir = null;

        /**
         * Includes directories, separated by semicolons (;).
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ExcludeDir = null;

        /**
         * Backup pattern: 0 weekly, 1 daily.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BackupType = null;

        /**
         * Backup days in a week (1-7): 1; 2; 3; 4.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Weekday = null;

        /**
         * Backup Execution Time Point (0-23): 11:00; 12:00
         * @type {string || null}
         */
        this.Hour = null;

        /**
         * Storage Days, 0 for Permanent
         * @type {number || null}
         */
        this.SaveDay = null;

        /**
         * Creation time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modification time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Number of Bound Machines
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MachineCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uin = 'Uin' in params ? params.Uin : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsAll = 'IsAll' in params ? params.IsAll : null;
        this.IncludeDir = 'IncludeDir' in params ? params.IncludeDir : null;
        this.ExcludeDir = 'ExcludeDir' in params ? params.ExcludeDir : null;
        this.BackupType = 'BackupType' in params ? params.BackupType : null;
        this.Weekday = 'Weekday' in params ? params.Weekday : null;
        this.Hour = 'Hour' in params ? params.Hour : null;
        this.SaveDay = 'SaveDay' in params ? params.SaveDay : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.MachineCount = 'MachineCount' in params ? params.MachineCount : null;

    }
}

/**
 * DescribeIgnoreHostAndItemConfig request structure.
 * @class
 */
class DescribeIgnoreHostAndItemConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>ItemId - int64 - whether required: no - item ID</i>
<li>RuleId - int64 - whether required: no - rule ID</li>
<li>HostId - string - whether required: no - host ID</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeReverseShellRules request structure.
 * @class
 */
class DescribeReverseShellRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Keywords - String - whether required: no - keyword (process name)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeScanVulSetting response structure.
 * @class
 */
class DescribeScanVulSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability type: 1 - web-cms vulnerabilities; 2 - application vulnerabilities; 4 - Linux software vulnerabilities; 5 - Windows system vulnerabilities
         * @type {string || null}
         */
        this.VulCategories = null;

        /**
         * Severity level: 1 - low-risk; 2 - medium-risk; 3 - high-risk; 4 - critical (multiple selections are separated by English commas)
         * @type {string || null}
         */
        this.VulLevels = null;

        /**
         * Regular detection interval (days)
         * @type {number || null}
         */
        this.TimerInterval = null;

        /**
         * Regular detection time, such as 00:00
         * @type {string || null}
         */
        this.TimerTime = null;

        /**
         * Whether an emergency vulnerability: 0 - no; 1 - yes
         * @type {number || null}
         */
        this.VulEmergency = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Whether enabled
         * @type {number || null}
         */
        this.EnableScan = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * One-click scan timeout duration, such as 1800 seconds
         * @type {number || null}
         */
        this.ClickTimeout = null;

        /**
         * If empty, scan hosts with all Professional, Premium, and General Discount editions by default; if not empty, only scan the selected hosts.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * 
         * @type {number || null}
         */
        this.ScanMethod = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulCategories = 'VulCategories' in params ? params.VulCategories : null;
        this.VulLevels = 'VulLevels' in params ? params.VulLevels : null;
        this.TimerInterval = 'TimerInterval' in params ? params.TimerInterval : null;
        this.TimerTime = 'TimerTime' in params ? params.TimerTime : null;
        this.VulEmergency = 'VulEmergency' in params ? params.VulEmergency : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EnableScan = 'EnableScan' in params ? params.EnableScan : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ClickTimeout = 'ClickTimeout' in params ? params.ClickTimeout : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.ScanMethod = 'ScanMethod' in params ? params.ScanMethod : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Machine Cleanup Record Object
 * @class
 */
class MachineClearHistory extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID Value
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Instance name
         * @type {string || null}
         */
        this.InstanceName = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Client Last Offline Time
         * @type {string || null}
         */
        this.AgentLastOfflineTime = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.InstanceName = 'InstanceName' in params ? params.InstanceName : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.AgentLastOfflineTime = 'AgentLastOfflineTime' in params ? params.AgentLastOfflineTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * DescribeSecurityBroadcasts response structure.
 * @class
 */
class DescribeSecurityBroadcastsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
         * @type {Array.<Broadcasts> || null}
         */
        this.List = null;

        /**
         * Total count.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Broadcasts();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSearchLogs response structure.
 * @class
 */
class DescribeSearchLogsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search history. The latest 10 entries will be kept.
         * @type {Array.<string> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Data = 'Data' in params ? params.Data : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Container security
Description key-value pair filter, which is used for conditional filtering queries. For example, filter by ID, name, and status.
If there are multiple Filters, the logical relationship between them is AND.
If there are multiple Values in the same Filter, the logical relationship between the Values under the same Filter is OR.

 * @class
 */
class AssetFilters extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of filter key
         * @type {string || null}
         */
        this.Name = null;

        /**
         * One or more filter values
         * @type {Array.<string> || null}
         */
        this.Values = null;

        /**
         * Whether to use fuzzy query
         * @type {boolean || null}
         */
        this.ExactMatch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Values = 'Values' in params ? params.Values : null;
        this.ExactMatch = 'ExactMatch' in params ? params.ExactMatch : null;

    }
}

/**
 * DescribeAssetDatabaseInfo response structure.
 * @class
 */
class DescribeAssetDatabaseInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Database details
         * @type {AssetDatabaseDetail || null}
         */
        this.Database = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Database) {
            let obj = new AssetDatabaseDetail();
            obj.deserialize(params.Database)
            this.Database = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SyncMachines request structure.
 * @class
 */
class SyncMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to synchronize
         * @type {boolean || null}
         */
        this.Sync = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Sync = 'Sync' in params ? params.Sync : null;

    }
}

/**
 * Expert service - monthly inspection report
 * @class
 */
class MonthInspectionReport extends  AbstractModel {
    constructor(){
        super();

        /**
         * Inspection report name
         * @type {string || null}
         */
        this.ReportName = null;

        /**
         * Inspection report download link
         * @type {string || null}
         */
        this.ReportPath = null;

        /**
         * Inspection report update time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReportName = 'ReportName' in params ? params.ReportName : null;
        this.ReportPath = 'ReportPath' in params ? params.ReportPath : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * SetBashEventsStatus request structure.
 * @class
 */
class SetBashEventsStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array (The maximum number of IDs is 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * New status (0 - pending; 1 - high-risk; 2 - normal)
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Reverse Shell data
 * @class
 */
class ReverseShell extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID primary key
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.Hostip = null;

        /**
         * Target IP
         * @type {string || null}
         */
        this.DstIp = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.FullPath = null;

        /**
         * Command details
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * Executing user
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Executing user group
         * @type {string || null}
         */
        this.UserGroup = null;

        /**
         * Parent process name
         * @type {string || null}
         */
        this.ParentProcName = null;

        /**
         * Parent process user
         * @type {string || null}
         */
        this.ParentProcUser = null;

        /**
         * Parent process user group
         * @type {string || null}
         */
        this.ParentProcGroup = null;

        /**
         * Parent process path
         * @type {string || null}
         */
        this.ParentProcPath = null;

        /**
         * Processing status: 0 - pending; 2 - allowlisted; 3 - processed; 4 - ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Process tree
         * @type {string || null}
         */
        this.ProcTree = null;

        /**
         * Detection method: 0: behavior analysis; 1 command feature detection
         * @type {number || null}
         */
        this.DetectBy = null;

        /**
         *  Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Process ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Threat level: 0 - medium-risk; 1 - high-risk
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RiskLevel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Hostip = 'Hostip' in params ? params.Hostip : null;
        this.DstIp = 'DstIp' in params ? params.DstIp : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.FullPath = 'FullPath' in params ? params.FullPath : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.UserGroup = 'UserGroup' in params ? params.UserGroup : null;
        this.ParentProcName = 'ParentProcName' in params ? params.ParentProcName : null;
        this.ParentProcUser = 'ParentProcUser' in params ? params.ParentProcUser : null;
        this.ParentProcGroup = 'ParentProcGroup' in params ? params.ParentProcGroup : null;
        this.ParentProcPath = 'ParentProcPath' in params ? params.ParentProcPath : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.ProcTree = 'ProcTree' in params ? params.ProcTree : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.RiskLevel = 'RiskLevel' in params ? params.RiskLevel : null;

    }
}

/**
 * Software application-related process information
 * @class
 */
class AssetAppProcessInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Process status
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Process version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * User
         * @type {string || null}
         */
        this.User = null;

        /**
         * Startup time
         * @type {string || null}
         */
        this.StartTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.User = 'User' in params ? params.User : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;

    }
}

/**
 * Network attack allowlist rules
 * @class
 */
class NetAttackWhiteRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Rule description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * 0: A group of Quuid 1: All hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Whether to process previous events: 0: do not process; 1: process
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DealOldEvents = null;

        /**
         * Host QUUIDs, separated by semicolons (;).
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuids = null;

        /**
         * Source IP. Single IP: 1.1.1.1, IP Range: 1.1.1.1-1.1.2.1, IP Range: 1.1.1.0/24, separated by semicolons (;)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SrcIP = null;

        /**
         * Creation time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.SrcIP = 'SrcIP' in params ? params.SrcIP : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * DescribeWebHookRule response structure.
 * @class
 */
class DescribeWebHookRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule content
         * @type {WebHookRuleDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new WebHookRuleDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineStrategyList request structure.
 * @class
 */
class DescribeBaselineStrategyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum number is 100.)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Rule switch: 1 - on; 0 - off; 2: all
         * @type {number || null}
         */
        this.Enabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Enabled = 'Enabled' in params ? params.Enabled : null;

    }
}

/**
 * ExportJavaMemShells request structure.
 * @class
 */
class ExportJavaMemShellsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: InstanceID and IP

MachineName host name for fuzzy query; Type, status for precise match; CreateBeginTime, CreateEndTime for time period
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Export fields
         * @type {Array.<string> || null}
         */
        this.Where = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Where = 'Where' in params ? params.Where : null;

    }
}

/**
 * DescribeVersionCompareChart response structure.
 * @class
 */
class DescribeVersionCompareChartResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * json string
         * @type {string || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Data = 'Data' in params ? params.Data : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Network attack event
 * @class
 */
class NetAttackEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Log ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Source IP
         * @type {string || null}
         */
        this.SrcIP = null;

        /**
         * Source location
         * @type {string || null}
         */
        this.Location = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Attack time
         * @type {string || null}
         */
        this.MergeTime = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Attack Status: 0: Attack Attempt 1: Confirmed Attack (Successful Attack).
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Processing Status: 0 Pending, 1 Processed, 2 Allowlisted, 3 Ignored, 4 Deleted, 5: Defense Enabled.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether vulnerabilities support defense. 0: No 1: Yes
         * @type {number || null}
         */
        this.VulSupportDefense = null;

        /**
         * Whether to enable vulnerability defense: 0 - No, 1 - Yes
         * @type {number || null}
         */
        this.VulDefenceStatus = null;

        /**
         * Machine payment edition. 0: Basic Edition; 1: Professional Edition; 2: Premium Edition; 3: General Discount Edition
         * @type {number || null}
         */
        this.PayVersion = null;

        /**
         * cvm uuid
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Attacks
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Whether to add new hosts today
         * @type {boolean || null}
         */
        this.New = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.SrcIP = 'SrcIP' in params ? params.SrcIP : null;
        this.Location = 'Location' in params ? params.Location : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.MergeTime = 'MergeTime' in params ? params.MergeTime : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.VulSupportDefense = 'VulSupportDefense' in params ? params.VulSupportDefense : null;
        this.VulDefenceStatus = 'VulDefenceStatus' in params ? params.VulDefenceStatus : null;
        this.PayVersion = 'PayVersion' in params ? params.PayVersion : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.New = 'New' in params ? params.New : null;

    }
}

/**
 * DescribeMachineDefenseCnt response structure.
 * @class
 */
class DescribeMachineDefenseCntResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack detection statistics
         * @type {number || null}
         */
        this.AttackLogs = null;

        /**
         * Core file monitoring statistics
         * @type {number || null}
         */
        this.FileTamper = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AttackLogs = 'AttackLogs' in params ? params.AttackLogs : null;
        this.FileTamper = 'FileTamper' in params ? params.FileTamper : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline Information
 * @class
 */
class BaselineItemInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline Detection Item ID
         * @type {number || null}
         */
        this.ItemId = null;

        /**
         * Detection Item Name
         * @type {string || null}
         */
        this.ItemName = null;

        /**
         * ID of the Rule to Which the Detection Item Belongs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Detection item description
         * @type {string || null}
         */
        this.ItemDesc = null;

        /**
         * Remediation Method for Inspection Items
         * @type {string || null}
         */
        this.FixMethod = null;

        /**
         * Rule Name of Detection Item
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Risk level
         * @type {number || null}
         */
        this.Level = null;

        /**
         * System Rule ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SysRuleId = null;

        /**
         * Referenced Custom Rule Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineCustomRuleIdName> || null}
         */
        this.RelatedCustomRuleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ItemId = 'ItemId' in params ? params.ItemId : null;
        this.ItemName = 'ItemName' in params ? params.ItemName : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.ItemDesc = 'ItemDesc' in params ? params.ItemDesc : null;
        this.FixMethod = 'FixMethod' in params ? params.FixMethod : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.SysRuleId = 'SysRuleId' in params ? params.SysRuleId : null;

        if (params.RelatedCustomRuleInfo) {
            this.RelatedCustomRuleInfo = new Array();
            for (let z in params.RelatedCustomRuleInfo) {
                let obj = new BaselineCustomRuleIdName();
                obj.deserialize(params.RelatedCustomRuleInfo[z]);
                this.RelatedCustomRuleInfo.push(obj);
            }
        }

    }
}

/**
 * Attack trend statistics
 * @class
 */
class NetAttackTrend extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time Point, e.g., 2023-05-06
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DateTime = null;

        /**
         * Number of attacks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackCount = null;

        /**
         * Attack Attempts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TryAttackCount = null;

        /**
         * Attack Success Count
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SuccAttackCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DateTime = 'DateTime' in params ? params.DateTime : null;
        this.AttackCount = 'AttackCount' in params ? params.AttackCount : null;
        this.TryAttackCount = 'TryAttackCount' in params ? params.TryAttackCount : null;
        this.SuccAttackCount = 'SuccAttackCount' in params ? params.SuccAttackCount : null;

    }
}

/**
 * DescribeVertexDetail request structure.
 * @class
 */
class DescribeVertexDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Point ID list
         * @type {Array.<string> || null}
         */
        this.VertexIds = null;

        /**
         * Event ID
         * @type {string || null}
         */
        this.IncidentId = null;

        /**
         * The name of the table where the event occurred
         * @type {string || null}
         */
        this.TableName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VertexIds = 'VertexIds' in params ? params.VertexIds : null;
        this.IncidentId = 'IncidentId' in params ? params.IncidentId : null;
        this.TableName = 'TableName' in params ? params.TableName : null;

    }
}

/**
 * Component statistics
 * @class
 */
class ComponentStatistics extends  AbstractModel {
    constructor(){
        super();

        /**
         * Component ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.MachineNum = null;

        /**
         * Component name
         * @type {string || null}
         */
        this.ComponentName = null;

        /**
         * Component type
<li>WEB: Web component</li>
<li>SYSTEM: system component</li>
         * @type {string || null}
         */
        this.ComponentType = null;

        /**
         * Component description
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.MachineNum = 'MachineNum' in params ? params.MachineNum : null;
        this.ComponentName = 'ComponentName' in params ? params.ComponentName : null;
        this.ComponentType = 'ComponentType' in params ? params.ComponentType : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * ExportAssetWebServiceInfoList request structure.
 * @class
 */
class ExportAssetWebServiceInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>User - string - whether required: no - running user</li>
<li>Name - string - whether required: no - Web service name:</li>
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - string - whether required: no - Windows/Linux</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FirstTime|ProcessCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * SetBashEventsStatus response structure.
 * @class
 */
class SetBashEventsStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetUserInfo request structure.
 * @class
 */
class DescribeAssetUserInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM UUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * CWPP UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Account name
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * UpdateBaselineStrategy response structure.
 * @class
 */
class UpdateBaselineStrategyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAgentInstallCommand request structure.
 * @class
 */
class DescribeAgentInstallCommandRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether Tencent Cloud
         * @type {boolean || null}
         */
        this.IsCloud = null;

        /**
         * Network type: basic - basic network; private - VPC; public - public network; direct - direct connect
         * @type {string || null}
         */
        this.NetType = null;

        /**
         * Region identifier, required when NetType=direct
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * VpcId, required when NetType=direct
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Tag ID list, effective only when IsCloud=false
         * @type {Array.<number> || null}
         */
        this.TagIds = null;

        /**
         * Command validity period, required for non-Tencent Cloud instances
         * @type {string || null}
         */
        this.ExpireDate = null;

        /**
         * VIP Accessed via Proxy Mode
         * @type {string || null}
         */
        this.Vip = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsCloud = 'IsCloud' in params ? params.IsCloud : null;
        this.NetType = 'NetType' in params ? params.NetType : null;
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.TagIds = 'TagIds' in params ? params.TagIds : null;
        this.ExpireDate = 'ExpireDate' in params ? params.ExpireDate : null;
        this.Vip = 'Vip' in params ? params.Vip : null;

    }
}

/**
 * DescribeMachineRegionList response structure.
 * @class
 */
class DescribeMachineRegionListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM type region list
         * @type {Array.<RegionListDetail> || null}
         */
        this.RegionList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RegionList) {
            this.RegionList = new Array();
            for (let z in params.RegionList) {
                let obj = new RegionListDetail();
                obj.deserialize(params.RegionList[z]);
                this.RegionList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportPrivilegeEvents request structure.
 * @class
 */
class ExportPrivilegeEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ModifyWebPageProtectSwitch request structure.
 * @class
 */
class ModifyWebPageProtectSwitchRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch type: 1 - protection switch; 2 - auto recovery switch; 3 - remove protection directory
         * @type {number || null}
         */
        this.SwitchType = null;

        /**
         * Sites that require operating switches (maximum quantity is 100)
         * @type {Array.<string> || null}
         */
        this.Ids = null;

        /**
         * 1 - on; 0 - off; required when SwitchType is 1 | 2;
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SwitchType = 'SwitchType' in params ? params.SwitchType : null;
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DescribeScreenGeneralStat request structure.
 * @class
 */
class DescribeScreenGeneralStatRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeExpertServiceList request structure.
 * @class
 */
class DescribeExpertServiceListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Keyword - String - whether required: no - filter by keyword</li>
<li>Uuids - String - whether required: no - filter by host ID</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting step size
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sort method
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: StartTime, EndTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyUsersConfig response structure.
 * @class
 */
class ModifyUsersConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Server Basic Information
 * @class
 */
class MachineExtraInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WanIP = null;

        /**
         * Private IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PrivateIP = null;

        /**
         * Network Type. 1: VPC network; 2: Basic Network; 3: Non-Tencent Cloud Network
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NetworkType = null;

        /**
         * Network Name, returns vpc_id in the case of a VPC network
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.NetworkName = null;

        /**
         * Instance ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceID = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WanIP = 'WanIP' in params ? params.WanIP : null;
        this.PrivateIP = 'PrivateIP' in params ? params.PrivateIP : null;
        this.NetworkType = 'NetworkType' in params ? params.NetworkType : null;
        this.NetworkName = 'NetworkName' in params ? params.NetworkName : null;
        this.InstanceID = 'InstanceID' in params ? params.InstanceID : null;
        this.HostName = 'HostName' in params ? params.HostName : null;

    }
}

/**
 * DescribeAttackEventInfo request structure.
 * @class
 */
class DescribeAttackEventInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * Core file monitoring event
 * @class
 */
class FileTamperEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine Name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Machine IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last occurrence time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * cvm id
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Event Type/Action. 0 - Alarm
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.ProcessExe = null;

        /**
         * Process parameter
         * @type {string || null}
         */
        this.ProcessArgv = null;

        /**
         * Target file path
         * @type {string || null}
         */
        this.Target = null;

        /**
         * Processing Status. 0 - Pending; 1 - Allowlisted; 2 - Deleted; 3 - Ignored; 4 - Manually Processed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Event Occurrences
         * @type {number || null}
         */
        this.EventCount = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Event Details: JSON Format
         * @type {string || null}
         */
        this.Pstree = null;

        /**
         * Rule Type. 0 - System Rule; 1 - Custom Rule
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Host Online Information: ONLINE, OFFLINE
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Severity description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Remediation Suggestions
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Process permission
         * @type {string || null}
         */
        this.ExePermission = null;

        /**
         * Username
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * User group
         * @type {string || null}
         */
        this.UserGroup = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ExeMd5 = null;

        /**
         * Process File Size
         * @type {number || null}
         */
        this.ExeSize = null;

        /**
         * Process Execution Duration
         * @type {number || null}
         */
        this.ExeTime = null;

        /**
         * Target file size
         * @type {number || null}
         */
        this.TargetSize = null;

        /**
         * Target File Permissions
         * @type {string || null}
         */
        this.TargetPermission = null;

        /**
         * Target File Update Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TargetModifyTime = null;

        /**
         * Target File Creation Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TargetCreatTime = null;

        /**
         * Process PID
         * @type {number || null}
         */
        this.ExePid = null;

        /**
         * File name
         * @type {string || null}
         */
        this.TargetName = null;

        /**
         * Reference link
         * @type {string || null}
         */
        this.Reference = null;

        /**
         * Risk Level. 0: None; 1: High-Risk; 2: Medium-Risk; 3: Low-Risk
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Process name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ExeName = null;

        /**
         *  Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * File threat behavior
<li>read: read file</li>
<li>write: modify file</li>
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileAction = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ProcessExe = 'ProcessExe' in params ? params.ProcessExe : null;
        this.ProcessArgv = 'ProcessArgv' in params ? params.ProcessArgv : null;
        this.Target = 'Target' in params ? params.Target : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.EventCount = 'EventCount' in params ? params.EventCount : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.Pstree = 'Pstree' in params ? params.Pstree : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.ExePermission = 'ExePermission' in params ? params.ExePermission : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.UserGroup = 'UserGroup' in params ? params.UserGroup : null;
        this.ExeMd5 = 'ExeMd5' in params ? params.ExeMd5 : null;
        this.ExeSize = 'ExeSize' in params ? params.ExeSize : null;
        this.ExeTime = 'ExeTime' in params ? params.ExeTime : null;
        this.TargetSize = 'TargetSize' in params ? params.TargetSize : null;
        this.TargetPermission = 'TargetPermission' in params ? params.TargetPermission : null;
        this.TargetModifyTime = 'TargetModifyTime' in params ? params.TargetModifyTime : null;
        this.TargetCreatTime = 'TargetCreatTime' in params ? params.TargetCreatTime : null;
        this.ExePid = 'ExePid' in params ? params.ExePid : null;
        this.TargetName = 'TargetName' in params ? params.TargetName : null;
        this.Reference = 'Reference' in params ? params.Reference : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.ExeName = 'ExeName' in params ? params.ExeName : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.FileAction = 'FileAction' in params ? params.FileAction : null;

    }
}

/**
 * CreateLogExport request structure.
 * @class
 */
class CreateLogExportRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of logs exported. The maximum value is 50 million.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Start time of log export, with a timestamp in milliseconds
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End time of log export, with a timestamp in milliseconds
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Retrieval statements for log export, and [SQL statements] are not supported
         * @type {string || null}
         */
        this.QueryString = null;

        /**
         * Sorting for log export time. Valid values are asc and desc, and the default value is desc.
         * @type {string || null}
         */
        this.Sort = null;

        /**
         * Data format for exported log. Valid values are json an csv, the default value is json.
         * @type {string || null}
         */
        this.Format = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Count = 'Count' in params ? params.Count : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.QueryString = 'QueryString' in params ? params.QueryString : null;
        this.Sort = 'Sort' in params ? params.Sort : null;
        this.Format = 'Format' in params ? params.Format : null;

    }
}

/**
 * DescribeLicense response structure.
 * @class
 */
class DescribeLicenseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Order resources
 * @class
 */
class OrderResource extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource primary key ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.BeginTime = null;

        /**
         * Expiration time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.BeginTime = 'BeginTime' in params ? params.BeginTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;

    }
}

/**
 * DescribeMalwareFile response structure.
 * @class
 */
class DescribeMalwareFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan file download link
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookRule request structure.
 * @class
 */
class DescribeWebHookRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeSecurityBroadcastInfo response structure.
 * @class
 */
class DescribeSecurityBroadcastInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security broadcasting article details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {BroadcastInfo || null}
         */
        this.BroadcastInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BroadcastInfo) {
            let obj = new BroadcastInfo();
            obj.deserialize(params.BroadcastInfo)
            this.BroadcastInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogDeliveryKafkaOptions response structure.
 * @class
 */
class DescribeLogDeliveryKafkaOptionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance list
         * @type {Array.<CKafkaInstanceInfo> || null}
         */
        this.InstanceList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.InstanceList) {
            this.InstanceList = new Array();
            for (let z in params.InstanceList) {
                let obj = new CKafkaInstanceInfo();
                obj.deserialize(params.InstanceList[z]);
                this.InstanceList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenRiskAssetsTop response structure.
 * @class
 */
class DescribeScreenRiskAssetsTopResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistical details icon data. Name: display the host IP and region; value: number of events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenNameValue> || null}
         */
        this.Chart = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Chart) {
            this.Chart = new Array();
            for (let z in params.Chart) {
                let obj = new ScreenNameValue();
                obj.deserialize(params.Chart[z]);
                this.Chart.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * StopBaselineDetect request structure.
 * @class
 */
class StopBaselineDetectRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Cancel task ID collection
         * @type {Array.<number> || null}
         */
        this.TaskIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;

    }
}

/**
 * ScanBaseline response structure.
 * @class
 */
class ScanBaselineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * QUUID of the host being scanned
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ScanningQuuids = null;

        /**
         * TaskId returned upon successful task distribution
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScanningQuuids = 'ScanningQuuids' in params ? params.ScanningQuuids : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CheckLogKafkaConnectionState request structure.
 * @class
 */
class CheckLogKafkaConnectionStateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Access method: 1 - public network domain name access; 2 - supported environment access
         * @type {number || null}
         */
        this.AccessType = null;

        /**
         * Access address: domain name or IP, with port
         * @type {string || null}
         */
        this.AccessAddr = null;

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * 0 - without password; 1 - with password
         * @type {number || null}
         */
        this.HasPwd = null;

        /**
         * Password, using AES encryption
         * @type {string || null}
         */
        this.Pwd = null;

        /**
         * Kafka instance ID
         * @type {string || null}
         */
        this.KafkaId = null;

        /**
         * Kafka version
         * @type {string || null}
         */
        this.InsVersion = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AccessType = 'AccessType' in params ? params.AccessType : null;
        this.AccessAddr = 'AccessAddr' in params ? params.AccessAddr : null;
        this.Username = 'Username' in params ? params.Username : null;
        this.HasPwd = 'HasPwd' in params ? params.HasPwd : null;
        this.Pwd = 'Pwd' in params ? params.Pwd : null;
        this.KafkaId = 'KafkaId' in params ? params.KafkaId : null;
        this.InsVersion = 'InsVersion' in params ? params.InsVersion : null;

    }
}

/**
 * ModifyNetAttackSetting request structure.
 * @class
 */
class ModifyNetAttackSettingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0 - Disable Network Attack Detection; 1 - Enable Network Attack Detection.
         * @type {number || null}
         */
        this.NetAttackEnable = null;

        /**
         * 0: New warning events pending processing by default, 1: New warning events processed by default, 3: New warning events ignored by default.
         * @type {number || null}
         */
        this.NetAttackAlarmStatus = null;

        /**
         * 1 - All Ultimate edition hosts; 0 - list of hosts with Quuids
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Specified hosts
         * @type {Array.<string> || null}
         */
        this.InstanceIds = null;

        /**
         * Manually Excluded Hosts
         * @type {Array.<string> || null}
         */
        this.ExcludeInstanceIds = null;

        /**
         * New assets automatically include: 0 - Do not include, 1 - include.
         * @type {number || null}
         */
        this.AutoInclude = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NetAttackEnable = 'NetAttackEnable' in params ? params.NetAttackEnable : null;
        this.NetAttackAlarmStatus = 'NetAttackAlarmStatus' in params ? params.NetAttackAlarmStatus : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.InstanceIds = 'InstanceIds' in params ? params.InstanceIds : null;
        this.ExcludeInstanceIds = 'ExcludeInstanceIds' in params ? params.ExcludeInstanceIds : null;
        this.AutoInclude = 'AutoInclude' in params ? params.AutoInclude : null;

    }
}

/**
 * DescribeRiskDnsList response structure.
 * @class
 */
class DescribeRiskDnsListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Arrays of malicious request lists
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RiskDnsList> || null}
         */
        this.RiskDnsList = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RiskDnsList) {
            this.RiskDnsList = new Array();
            for (let z in params.RiskDnsList) {
                let obj = new RiskDnsList();
                obj.deserialize(params.RiskDnsList[z]);
                this.RiskDnsList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRiskDnsPolicyList request structure.
 * @class
 */
class ExportRiskDnsPolicyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>PolicyType - int - whether required: no - policy type</li>
<li>PolicyName - string - whether required: no - policy name</li>
<li>Domain - string - Required: No - Domain (first urlencode the domain, then base64)</li>
<li>PolicyAction- int - whether required: no - policy action</li>
<li>IsEnabled - int - whether required: no - whether effective</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting column: [PolicyName|HostType]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeAssetWebAppList response structure.
 * @class
 */
class DescribeAssetWebAppListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Data list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebAppBaseInfo> || null}
         */
        this.WebApps = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.WebApps) {
            this.WebApps = new Array();
            for (let z in params.WebApps) {
                let obj = new AssetWebAppBaseInfo();
                obj.deserialize(params.WebApps[z]);
                this.WebApps.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetProcessInfoList request structure.
 * @class
 */
class ExportAssetProcessInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - whether required: no - process name</li>
<li>User - String - whether required: no - Process user</li>
<li>Group - String - whether required: no - Process user group</li>
<li>Pid - uint64 - whether required: no - process ID</li>
<li>Ppid - uint64 - whether required: no - parent process ID</li>
<li>OsType - uint64 - whether required: no - windows/Linux</li>
<li>Status - string - whether required: no - process status:
0: all
1: R executable
2: S interruptible
3: Uninterruptible</li>
<li>RunTimeStart - String - whether required: no - start time of running</li>
<li>RunTimeEnd - String - whether required: no - end time of running</li>
<li>InstallByPackage - uint64 - whether required: no - whether to install via a package: 0 - no; 1 - yes</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|StartTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeAssetWebAppCount response structure.
 * @class
 */
class DescribeAssetWebAppCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual Web applications
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebApps = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebApps) {
            this.WebApps = new Array();
            for (let z in params.WebApps) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebApps[z]);
                this.WebApps.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Resource management database list information
 * @class
 */
class AssetDatabaseDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Database name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Listening port
         * @type {string || null}
         */
        this.Port = null;

        /**
         * Protocol
         * @type {string || null}
         */
        this.Proto = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Bind IP
         * @type {string || null}
         */
        this.Ip = null;

        /**
         * Configuration file path
         * @type {string || null}
         */
        this.ConfigPath = null;

        /**
         * Log file path
         * @type {string || null}
         */
        this.LogPath = null;

        /**
         * Data path
         * @type {string || null}
         */
        this.DataPath = null;

        /**
         * Running permission
         * @type {string || null}
         */
        this.Permission = null;

        /**
         * Error log path
         * @type {string || null}
         */
        this.ErrorLogPath = null;

        /**
         * Plugin path
         * @type {string || null}
         */
        this.PlugInPath = null;

        /**
         * Binary path
         * @type {string || null}
         */
        this.BinPath = null;

        /**
         * Startup parameter
         * @type {string || null}
         */
        this.Param = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.Proto = 'Proto' in params ? params.Proto : null;
        this.User = 'User' in params ? params.User : null;
        this.Ip = 'Ip' in params ? params.Ip : null;
        this.ConfigPath = 'ConfigPath' in params ? params.ConfigPath : null;
        this.LogPath = 'LogPath' in params ? params.LogPath : null;
        this.DataPath = 'DataPath' in params ? params.DataPath : null;
        this.Permission = 'Permission' in params ? params.Permission : null;
        this.ErrorLogPath = 'ErrorLogPath' in params ? params.ErrorLogPath : null;
        this.PlugInPath = 'PlugInPath' in params ? params.PlugInPath : null;
        this.BinPath = 'BinPath' in params ? params.BinPath : null;
        this.Param = 'Param' in params ? params.Param : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * DescribeScanTaskStatus request structure.
 * @class
 */
class DescribeScanTaskStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Module type: Malware (Trojan), Vul (vulnerability), and Baseline are currently available.
         * @type {string || null}
         */
        this.ModuleType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;

    }
}

/**
 * DescribeVulStoreList response structure.
 * @class
 */
class DescribeVulStoreListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulStoreListInfo> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Remaining Searches for Today
         * @type {number || null}
         */
        this.Remaining = null;

        /**
         * Free Search Count
         * @type {number || null}
         */
        this.FreeSearchTimes = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulStoreListInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.Remaining = 'Remaining' in params ? params.Remaining : null;
        this.FreeSearchTimes = 'FreeSearchTimes' in params ? params.FreeSearchTimes : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLoginWhiteHostList response structure.
 * @class
 */
class DescribeLoginWhiteHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Server list
         * @type {Array.<HostDesc> || null}
         */
        this.Hosts = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.Hosts) {
            this.Hosts = new Array();
            for (let z in params.Hosts) {
                let obj = new HostDesc();
                obj.deserialize(params.Hosts[z]);
                this.Hosts.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportIgnoreBaselineRule request structure.
 * @class
 */
class ExportIgnoreBaselineRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection item name
         * @type {string || null}
         */
        this.RuleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;

    }
}

/**
 * ModifyMaliciousRequestWhiteList response structure.
 * @class
 */
class ModifyMaliciousRequestWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteMachineTag request structure.
 * @class
 */
class DeleteMachineTagRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Associated tag ID
         * @type {number || null}
         */
        this.Rid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Rid = 'Rid' in params ? params.Rid : null;

    }
}

/**
 * Asset management disk partition information
 * @class
 */
class AssetDiskPartitionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Partition name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Partition size (unit: G)
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Partition utilization
         * @type {number || null}
         */
        this.Percent = null;

        /**
         * File system type
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Mounting directory
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Used space (unit: G)
         * @type {number || null}
         */
        this.Used = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.Percent = 'Percent' in params ? params.Percent : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.Used = 'Used' in params ? params.Used : null;

    }
}

/**
 * DescribeScreenMachineRegions request structure.
 * @class
 */
class DescribeScreenMachineRegionsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyWebHookPolicyStatus request structure.
 * @class
 */
class ModifyWebHookPolicyStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * id
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Switch: 1 - disabled; 0 - enabled
         * @type {number || null}
         */
        this.IsDisabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;

    }
}

/**
 * Malicious request event
 * @class
 */
class RiskDnsEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.PolicyId = null;

        /**
         * Type of hit policy [-1: unknown|0: system|1: user]
         * @type {number || null}
         */
        this.PolicyType = null;

        /**
         * Name of hit policy
         * @type {string || null}
         */
        this.PolicyName = null;

        /**
         * Protection level [0: basic edition|1: professional edition|2: ultimate edition]
         * @type {number || null}
         */
        this.ProtectLevel = null;

        /**
         * Server ID
         * @type {string || null}
         */
        this.HostId = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.AgentId = null;

        /**
         * Access domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Tag Features
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Access count
         * @type {number || null}
         */
        this.AccessCount = null;

        /**
         * Threat description
         * @type {string || null}
         */
        this.ThreatDesc = null;

        /**
         * Fixing solution
         * @type {string || null}
         */
        this.SuggestSolution = null;

        /**
         * Reference link
         * @type {string || null}
         */
        this.ReferenceLink = null;

        /**
         * Processing status [0: pending|2: allowlisted|3: untrusted status|4: processed|5: ignored]
         * @type {number || null}
         */
        this.HandleStatus = null;

        /**
         * Process ID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process MD5
         * @type {string || null}
         */
        this.ProcessMd5 = null;

        /**
         * Command line
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * First access time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Last access Time
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Host online status [OFFLINE: offline|ONLINE: online|UNKNOWN: unknown]
         * @type {string || null}
         */
        this.HostStatus = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * [1:CentOS|2:Debian|3:Gentoo|4:Redhat|5:Ubuntu|6:Windows|7:TencentOS|8:CoreOS|9:FreeBSD|10:SUSE]
         * @type {number || null}
         */
        this.OsType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.PolicyId = 'PolicyId' in params ? params.PolicyId : null;
        this.PolicyType = 'PolicyType' in params ? params.PolicyType : null;
        this.PolicyName = 'PolicyName' in params ? params.PolicyName : null;
        this.ProtectLevel = 'ProtectLevel' in params ? params.ProtectLevel : null;
        this.HostId = 'HostId' in params ? params.HostId : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;
        this.AgentId = 'AgentId' in params ? params.AgentId : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.AccessCount = 'AccessCount' in params ? params.AccessCount : null;
        this.ThreatDesc = 'ThreatDesc' in params ? params.ThreatDesc : null;
        this.SuggestSolution = 'SuggestSolution' in params ? params.SuggestSolution : null;
        this.ReferenceLink = 'ReferenceLink' in params ? params.ReferenceLink : null;
        this.HandleStatus = 'HandleStatus' in params ? params.HandleStatus : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.ProcessMd5 = 'ProcessMd5' in params ? params.ProcessMd5 : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.HostStatus = 'HostStatus' in params ? params.HostStatus : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.OsType = 'OsType' in params ? params.OsType : null;

    }
}

/**
 * Baseline detection information
 * @class
 */
class BaselineRuleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection item name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Detection item description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Fixing suggestion
         * @type {string || null}
         */
        this.FixMessage = null;

        /**
         * Severity level
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Status
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Detection Item ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Last detection Time
         * @type {string || null}
         */
        this.LastScanAt = null;

        /**
         * Specific reason explanation
         * @type {string || null}
         */
        this.RuleRemark = null;

        /**
         * Unique UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Unique event ID
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.FixMessage = 'FixMessage' in params ? params.FixMessage : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.LastScanAt = 'LastScanAt' in params ? params.LastScanAt : null;
        this.RuleRemark = 'RuleRemark' in params ? params.RuleRemark : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DescribeExportMachines response structure.
 * @class
 */
class DescribeExportMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanTaskStatus response structure.
 * @class
 */
class DescribeScanTaskStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task scan status list
         * @type {TaskStatus || null}
         */
        this.State = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.State) {
            let obj = new TaskStatus();
            obj.deserialize(params.State)
            this.State = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseStrategyMachines request structure.
 * @class
 */
class DescribeRansomDefenseStrategyMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum number is 100.)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Ips- string- string- host name</li>
<li>Status - Uint64: 0 - unbound; 1 bound</li>
<li>Names - String - host name</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field, supporting CreateTime
         * @type {string || null}
         */
        this.By = null;

        /**
         * Anti-Ransomware Policy ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeAssetLoadInfo response structure.
 * @class
 */
class DescribeAssetLoadInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * System load
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AssetLoadSummary || null}
         */
        this.CpuLoad = null;

        /**
         * Memory utilization
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AssetLoadSummary || null}
         */
        this.MemLoad = null;

        /**
         * Hard disk utilization
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AssetLoadSummary || null}
         */
        this.DiskLoad = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.CpuLoad) {
            let obj = new AssetLoadSummary();
            obj.deserialize(params.CpuLoad)
            this.CpuLoad = obj;
        }

        if (params.MemLoad) {
            let obj = new AssetLoadSummary();
            obj.deserialize(params.MemLoad)
            this.MemLoad = obj;
        }

        if (params.DiskLoad) {
            let obj = new AssetLoadSummary();
            obj.deserialize(params.DiskLoad)
            this.DiskLoad = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineRiskCnt response structure.
 * @class
 */
class DescribeMachineRiskCntResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Cross-region log-in
         * @type {number || null}
         */
        this.HostLogin = null;

        /**
         * Password cracking
         * @type {number || null}
         */
        this.BruteAttack = null;

        /**
         * Malicious request
         * @type {number || null}
         */
        this.MaliciousRequest = null;

        /**
         * Reverse Shell
         * @type {number || null}
         */
        this.ReverseShell = null;

        /**
         * High-risk command
         * @type {number || null}
         */
        this.Bash = null;

        /**
         * Local privilege escalation
         * @type {number || null}
         */
        this.PrivilegeEscalation = null;

        /**
         * Trojan
         * @type {number || null}
         */
        this.Malware = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostLogin = 'HostLogin' in params ? params.HostLogin : null;
        this.BruteAttack = 'BruteAttack' in params ? params.BruteAttack : null;
        this.MaliciousRequest = 'MaliciousRequest' in params ? params.MaliciousRequest : null;
        this.ReverseShell = 'ReverseShell' in params ? params.ReverseShell : null;
        this.Bash = 'Bash' in params ? params.Bash : null;
        this.PrivilegeEscalation = 'PrivilegeEscalation' in params ? params.PrivilegeEscalation : null;
        this.Malware = 'Malware' in params ? params.Malware : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * 3D image of the host on the large screen
 * @class
 */
class ScreenRegionMachines extends  AbstractModel {
    constructor(){
        super();

        /**
         * All regions
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Region description in Chinese
         * @type {string || null}
         */
        this.RegionName = null;

        /**
         * Host list
         * @type {Array.<ScreenMachine> || null}
         */
        this.Machines = null;

        /**
         * Total number of hosts in this region
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Number of risky hosts
         * @type {number || null}
         */
        this.RiskCnt = null;

        /**
         * Number of potentially risky hosts
         * @type {number || null}
         */
        this.AttackCnt = null;

        /**
         * Number of risk-free hosts
         * @type {number || null}
         */
        this.SafetyCnt = null;

        /**
         * Number of hosts in offline/uninstalled status
         * @type {number || null}
         */
        this.UnAgentOfflineCnt = null;

        /**
         * Number of hosts that are omitted from displaying. When it is equal to 0, no hosts are omitted.
         * @type {number || null}
         */
        this.IgnoreCnt = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Region = 'Region' in params ? params.Region : null;
        this.RegionName = 'RegionName' in params ? params.RegionName : null;

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new ScreenMachine();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RiskCnt = 'RiskCnt' in params ? params.RiskCnt : null;
        this.AttackCnt = 'AttackCnt' in params ? params.AttackCnt : null;
        this.SafetyCnt = 'SafetyCnt' in params ? params.SafetyCnt : null;
        this.UnAgentOfflineCnt = 'UnAgentOfflineCnt' in params ? params.UnAgentOfflineCnt : null;
        this.IgnoreCnt = 'IgnoreCnt' in params ? params.IgnoreCnt : null;

    }
}

/**
 * Edit allowlisted entities
 * @class
 */
class UpdateHostLoginWhiteObj extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region information array
         * @type {Array.<Place> || null}
         */
        this.Places = null;

        /**
         * Source IP
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Username
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Data ID to be updated
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Places) {
            this.Places = new Array();
            for (let z in params.Places) {
                let obj = new Place();
                obj.deserialize(params.Places[z]);
                this.Places.push(obj);
            }
        }
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * ModifyWebPageProtectSwitch response structure.
 * @class
 */
class ModifyWebPageProtectSwitchResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebFrameCount response structure.
 * @class
 */
class DescribeAssetWebFrameCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual Web frameworks
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebFrames = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebFrames) {
            this.WebFrames = new Array();
            for (let z in params.WebFrames) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebFrames[z]);
                this.WebFrames.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on machine with non-isolatable Trojan
 * @class
 */
class CanNotSeparateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Public IP
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * Reason for isolation failure: 1 - agent offline
         * @type {number || null}
         */
        this.Reason = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.Reason = 'Reason' in params ? params.Reason : null;

    }
}

/**
 * DescribeAssetWebLocationCount response structure.
 * @class
 */
class DescribeAssetWebLocationCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual Web sites
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebLocations = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebLocations) {
            this.WebLocations = new Array();
            for (let z in params.WebLocations) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebLocations[z]);
                this.WebLocations.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashEventsNew response structure.
 * @class
 */
class DescribeBashEventsNewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * High-risk command event list
         * @type {Array.<BashEventNew> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BashEventNew();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * View vulnerability fixing details
 * @class
 */
class VulFixStatusInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Vulnerability fixing progress: 1-100;
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Vulnerability fixing status for corresponding hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulFixStatusHostInfo> || null}
         */
        this.HostList = null;

        /**
         * Number of hosts with failed vulnerability fixing
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FailCnt = null;

        /**
         * Number of hosts with successful vulnerability fixing
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FixSuccessCnt = null;

        /**
         * 
         * @type {number || null}
         */
        this.FixMethod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.HostList) {
            this.HostList = new Array();
            for (let z in params.HostList) {
                let obj = new VulFixStatusHostInfo();
                obj.deserialize(params.HostList[z]);
                this.HostList.push(obj);
            }
        }
        this.FailCnt = 'FailCnt' in params ? params.FailCnt : null;
        this.FixSuccessCnt = 'FixSuccessCnt' in params ? params.FixSuccessCnt : null;
        this.FixMethod = 'FixMethod' in params ? params.FixMethod : null;

    }
}

/**
 * DeleteWebHookReceiver response structure.
 * @class
 */
class DeleteWebHookReceiverResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetSystemPackageList response structure.
 * @class
 */
class ExportAssetSystemPackageListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogExports response structure.
 * @class
 */
class DescribeLogExportsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of exported logs
         * @type {Array.<ExportInfo> || null}
         */
        this.Exports = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.Exports) {
            this.Exports = new Array();
            for (let z in params.Exports) {
                let obj = new ExportInfo();
                obj.deserialize(params.Exports[z]);
                this.Exports.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulTrend response structure.
 * @class
 */
class DescribeVulTrendResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of vulnerability exploitation attacks in the past six months
         * @type {number || null}
         */
        this.VulEventCount = null;

        /**
         * Number of new vulnerability exploitation attacks in the past six months
         * @type {number || null}
         */
        this.IncreaseVulEventCount = null;

        /**
         * Notable vulnerabilities attacked in the past six months
         * @type {number || null}
         */
        this.HotVulCount = null;

        /**
         * New notable vulnerabilities attacked in the past six months
         * @type {number || null}
         */
        this.IncreaseHotVulCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulEventCount = 'VulEventCount' in params ? params.VulEventCount : null;
        this.IncreaseVulEventCount = 'IncreaseVulEventCount' in params ? params.IncreaseVulEventCount : null;
        this.HotVulCount = 'HotVulCount' in params ? params.HotVulCount : null;
        this.IncreaseHotVulCount = 'IncreaseHotVulCount' in params ? params.IncreaseHotVulCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeOpenPortStatistics request structure.
 * @class
 */
class DescribeOpenPortStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Port - Uint64 - whether required: no - port number</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Operating System Name
 * @class
 */
class OsName extends  AbstractModel {
    constructor(){
        super();

        /**
         * System name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Operating system type enumeration value
         * @type {number || null}
         */
        this.MachineOSType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.MachineOSType = 'MachineOSType' in params ? params.MachineOSType : null;

    }
}

/**
 * DescribeMalwareTimingScanSetting request structure.
 * @class
 */
class DescribeMalwareTimingScanSettingRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Configuration for full-text index
 * @class
 */
class FullTextInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether case-sensitive
         * @type {boolean || null}
         */
        this.CaseSensitive = null;

        /**
         * Delimiter
         * @type {string || null}
         */
        this.Tokenizer = null;

        /**
         * Whether Chinese characters are contained.
         * @type {boolean || null}
         */
        this.ContainZH = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CaseSensitive = 'CaseSensitive' in params ? params.CaseSensitive : null;
        this.Tokenizer = 'Tokenizer' in params ? params.Tokenizer : null;
        this.ContainZH = 'ContainZH' in params ? params.ContainZH : null;

    }
}

/**
 * DescribeFileTamperRuleCount response structure.
 * @class
 */
class DescribeFileTamperRuleCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information on Number of Host-associated Core File Rules
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<FileTamperRuleCount> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new FileTamperRuleCount();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetUserList request structure.
 * @class
 */
class ExportAssetUserListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - whether required: no - account name</li>
<li>Uid - uint64 - whether required: no - Uid</li>
<li>Guid - uint64 - whether required: no - Guid</li>
<li>LoginTimeStart - String - whether required: no - start time, such as 2021-01-11</li>
<li>LoginTimeEnd - String - whether required: no - end time, such as 2021-01-11</li>
<li>LoginType - uint64 - whether required: no - 0 - not allowed to log in; 1 - only key-based log-in allowed; 2 - only password-based log-in allowed; 3 - both key-based and password-based log-in allowed (Linux only)</li>
<li>OsType - String - whether required: no - Windows or Linux</li>
<li>Status - uint64 - whether required: no - account status: 0 - disabled; 1 - enabled</li>
<li>Type - uint64 - whether required: no - account type: 0 - guest user; 1 - standard user; 2 - administrator user (Windows Only)</li>
<li>IsDomain - uint64 - whether required: no - whether a domain account: 0 - no; 1 - yes (Windows only)</li>
<li>IsRoot - uint64 - whether required: no - whether there is root permission: 0 - no; 1 - yes (Linux only)</li>
<li>IsSudo - uint64 - whether required: no - whether there is sudo permission: 0 - no; 1 - yes (Linux only)</li>
<li>IsSshLogin - uint64 - whether required: no - whether to use ssh log-in: 0 - no; 1 - yes (Linux only)</li>
<li>ShellLoginStatus - uint64 - whether required: no - whether to use shell log-in: 0 - no; 1 - yes (Linux only)</li>
<li>PasswordStatus - uint64 - whether required: no - password status: 1 - normal; 2 - expiring soon; 3 - expired; 4 - locked (Linux only)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FirstTime|LoginTime|ChangePasswordTime|PasswordDuaTime]
PasswordLockDays
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * The statistical entity representing the distribution of vulnerabilities by severity level
 * @class
 */
class VulLevelInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * // Severity level: 1 - low-risk; 2 - medium-risk; 3 - high-risk; 4 - critical
         * @type {number || null}
         */
        this.VulLevel = null;

        /**
         * Quantity
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulLevel = 'VulLevel' in params ? params.VulLevel : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * CreateBanWhiteList response structure.
 * @class
 */
class CreateBanWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether a global rule
         * @type {boolean || null}
         */
        this.IsGlobal = null;

        /**
         * Whether the addition of a rule would result in a duplicate
         * @type {boolean || null}
         */
        this.IsDuplicate = null;

        /**
         * Information on duplicate machines
         * @type {Array.<DuplicateHosts> || null}
         */
        this.DuplicateHosts = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.IsDuplicate = 'IsDuplicate' in params ? params.IsDuplicate : null;

        if (params.DuplicateHosts) {
            this.DuplicateHosts = new Array();
            for (let z in params.DuplicateHosts) {
                let obj = new DuplicateHosts();
                obj.deserialize(params.DuplicateHosts[z]);
                this.DuplicateHosts.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogStorageStatistic response structure.
 * @class
 */
class DescribeLogStorageStatisticResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total capacity (unit: GB)
         * @type {number || null}
         */
        this.TotalSize = null;

        /**
         * Used capacity (unit: GB)
         * @type {number || null}
         */
        this.UsedSize = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalSize = 'TotalSize' in params ? params.TotalSize : null;
        this.UsedSize = 'UsedSize' in params ? params.UsedSize : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Region information
 * @class
 */
class RegionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region identifiers, such as ap-guangzhou, ap-shanghai, and ap-beijing
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Chinese name of a region, such as South China (Guangzhou), East China (Shanghai Finance), and North China (Beijing)
         * @type {string || null}
         */
        this.RegionName = null;

        /**
         * Region ID
         * @type {number || null}
         */
        this.RegionId = null;

        /**
         * Region code, such as gz, sh, and bj
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * English name of the region
         * @type {string || null}
         */
        this.RegionNameEn = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Region = 'Region' in params ? params.Region : null;
        this.RegionName = 'RegionName' in params ? params.RegionName : null;
        this.RegionId = 'RegionId' in params ? params.RegionId : null;
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.RegionNameEn = 'RegionNameEn' in params ? params.RegionNameEn : null;

    }
}

/**
 * DescribeCanFixVulMachine response structure.
 * @class
 */
class DescribeCanFixVulMachineResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host vulnerability fixing information list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<CanFixVulInfo> || null}
         */
        this.VulInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.VulInfo) {
            this.VulInfo = new Array();
            for (let z in params.VulInfo) {
                let obj = new CanFixVulInfo();
                obj.deserialize(params.VulInfo[z]);
                this.VulInfo.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSearchTemplate response structure.
 * @class
 */
class CreateSearchTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: succeeded; 	non-0: failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Reason for failure
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Event point information
 * @class
 */
class IncidentVertexInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.IncidentId = null;

        /**
         * The name of the table where the event occurred
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TableName = null;

        /**
         * A list of node information, with array items containing detailed node information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VertexInfo> || null}
         */
        this.Vertex = null;

        /**
         * Total number of nodes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VertexCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IncidentId = 'IncidentId' in params ? params.IncidentId : null;
        this.TableName = 'TableName' in params ? params.TableName : null;

        if (params.Vertex) {
            this.Vertex = new Array();
            for (let z in params.Vertex) {
                let obj = new VertexInfo();
                obj.deserialize(params.Vertex[z]);
                this.Vertex.push(obj);
            }
        }
        this.VertexCount = 'VertexCount' in params ? params.VertexCount : null;

    }
}

/**
 * Baseline detection item
 * @class
 */
class BaselineItemDetect extends  AbstractModel {
    constructor(){
        super();

        /**
         * Item ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ItemId = null;

        /**
         * Item Name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ItemName = null;

        /**
         * Item Description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ItemDesc = null;

        /**
         * Fixing Method
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FixMethod = null;

        /**
         * Rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * 0: Failed; 1: Ignored; 3: Passed; 5: Under detection
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DetectStatus = null;

        /**
         * Risk level
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Number of affected servers
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * First detection time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Last Detection Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Detection result, JSON string
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DetectResult = null;

        /**
         * Rule ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Number of servers passed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PassedHostCount = null;

        /**
         * Number of servers failed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.NotPassedHostCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ItemId = 'ItemId' in params ? params.ItemId : null;
        this.ItemName = 'ItemName' in params ? params.ItemName : null;
        this.ItemDesc = 'ItemDesc' in params ? params.ItemDesc : null;
        this.FixMethod = 'FixMethod' in params ? params.FixMethod : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.DetectStatus = 'DetectStatus' in params ? params.DetectStatus : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.DetectResult = 'DetectResult' in params ? params.DetectResult : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.PassedHostCount = 'PassedHostCount' in params ? params.PassedHostCount : null;
        this.NotPassedHostCount = 'NotPassedHostCount' in params ? params.NotPassedHostCount : null;

    }
}

/**
 * DescribeVulDefenceSetting response structure.
 * @class
 */
class DescribeVulDefenceSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Defense switch: 0 - off; 1 - on
         * @type {number || null}
         */
        this.Enable = null;

        /**
         * Scope of impact: 1 - all ultimate edition hosts across the network; 0 - hosts in the QUUID list
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * List of affected host QUUIDs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Current number of ultimate edition hosts
         * @type {number || null}
         */
        this.FlagshipCount = null;

        /**
         * List of affected host IDs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.InstanceIds = null;

        /**
         * Whether new ultimate edition hosts automatically join: 1 - yes; 0 - no
         * @type {number || null}
         */
        this.AutoInclude = null;

        /**
         * List of excluded host IDs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ExcludeInstanceIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Enable = 'Enable' in params ? params.Enable : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.FlagshipCount = 'FlagshipCount' in params ? params.FlagshipCount : null;
        this.InstanceIds = 'InstanceIds' in params ? params.InstanceIds : null;
        this.AutoInclude = 'AutoInclude' in params ? params.AutoInclude : null;
        this.ExcludeInstanceIds = 'ExcludeInstanceIds' in params ? params.ExcludeInstanceIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetProcessCount response structure.
 * @class
 */
class DescribeAssetProcessCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of individual processes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Process = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeEmergencyResponseList request structure.
 * @class
 */
class DescribeEmergencyResponseListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Keyword - String - whether required: no - filter by keyword</li>
<li>Uuids - String - whether required: no - filter by host ID</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting step size
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sort method
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: StartTime, EndTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeScanState response structure.
 * @class
 */
class DescribeScanStateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0 - never scanned; 1 - scan in progress; 2 - scan completed; 3 - stop in progress; 4 - stop completed
         * @type {number || null}
         */
        this.ScanState = null;

        /**
         * Scan progress
         * @type {number || null}
         */
        this.Schedule = null;

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Vulnerability ID of task scan
         * @type {Array.<number> || null}
         */
        this.VulId = null;

        /**
         * 0 - one-click detection; 1 - regular detection
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Scan start time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ScanBeginTime = null;

        /**
         * Number of vulnerabilities scanned
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RiskEventCount = null;

        /**
         * Scan end time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ScanEndTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScanState = 'ScanState' in params ? params.ScanState : null;
        this.Schedule = 'Schedule' in params ? params.Schedule : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ScanBeginTime = 'ScanBeginTime' in params ? params.ScanBeginTime : null;
        this.RiskEventCount = 'RiskEventCount' in params ? params.RiskEventCount : null;
        this.ScanEndTime = 'ScanEndTime' in params ? params.ScanEndTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline Host Detection
 * @class
 */
class BaselineHostDetect extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host ID
         * @type {string || null}
         */
        this.HostId = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * 0: Failed; 1: Ignored; 3: Passed; 5: Under detection
         * @type {number || null}
         */
        this.DetectStatus = null;

        /**
         * Number of Passed Tasks in Detection
         * @type {number || null}
         */
        this.PassedItemCount = null;

        /**
         * Associated Detection Item Count
         * @type {number || null}
         */
        this.ItemCount = null;

        /**
         * Detection Failure Count
         * @type {number || null}
         */
        this.NotPassedItemCount = null;

        /**
         * First detection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Last detection Time
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * CWPP UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostId = 'HostId' in params ? params.HostId : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;
        this.DetectStatus = 'DetectStatus' in params ? params.DetectStatus : null;
        this.PassedItemCount = 'PassedItemCount' in params ? params.PassedItemCount : null;
        this.ItemCount = 'ItemCount' in params ? params.ItemCount : null;
        this.NotPassedItemCount = 'NotPassedItemCount' in params ? params.NotPassedItemCount : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * EditTags request structure.
 * @class
 */
class EditTagsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Tag ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Quuid
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DeleteReverseShellRules request structure.
 * @class
 */
class DeleteReverseShellRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array (The maximum quantity is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * Vulnerability list on big screen
 * @class
 */
class ScreenVulInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Last detection Time
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Vulnerability level 1: low-risk; 2: medium-risk; 3: high-risk; 4: prompt
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Vulnerability type: 1 - web-cms vulnerabilities; 2 - application vulnerabilities; 4 - Linux software vulnerabilities; 5 - Windows system vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Category = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Category = 'Category' in params ? params.Category : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * UntrustMalwares request structure.
 * @class
 */
class UntrustMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan ID array (The maximum number of IDs is 100.)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeScreenEventsCnt request structure.
 * @class
 */
class DescribeScreenEventsCntRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data type: 0 - total number of pending risks; 1: total number of affected assets. The default is 0.
         * @type {number || null}
         */
        this.BusinessType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BusinessType = 'BusinessType' in params ? params.BusinessType : null;

    }
}

/**
 * DescribeBaselineEffectHostList request structure.
 * @class
 */
class DescribeBaselineEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum number is 100.)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Baseline ID
         * @type {number || null}
         */
        this.BaselineId = null;

        /**
         * Filter criteria
<li>AliasName - String - host alias</li>
<li>Status- Uint: 1 - passed; 0 - failed; 5 - under detection</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Host UUID array
         * @type {Array.<string> || null}
         */
        this.UuidList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.BaselineId = 'BaselineId' in params ? params.BaselineId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.UuidList = 'UuidList' in params ? params.UuidList : null;

    }
}

/**
 * Custom passthrough field structure
 * @class
 */
class WebHookCustomField extends  AbstractModel {
    constructor(){
        super();

        /**
         * key
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Key = null;

        /**
         * value
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * DescribeDefenceEventDetail response structure.
 * @class
 */
class DescribeDefenceEventDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability event details
         * @type {VulDefenceEventDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new VulDefenceEventDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBaselineHostDetectList request structure.
 * @class
 */
class ExportBaselineHostDetectListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>HostTag - string - whether required: no - host tag</li> <li>ItemId - int64 - whether required: no - item ID</li> <li>RuleId - int64 - whether required: no - rule ID</li> <li>IsPassed - int - whether required: no - whether passed</li> <li>RiskTier - int - whether required: no - risk level</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * 0: Filtered Result Export; 1: Export All
         * @type {number || null}
         */
        this.ExportAll = null;

        /**
         * 0: show the export interface; 1: export all result events
         * @type {number || null}
         */
        this.IsExportDetail = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ExportAll = 'ExportAll' in params ? params.ExportAll : null;
        this.IsExportDetail = 'IsExportDetail' in params ? params.IsExportDetail : null;

    }
}

/**
 * DescribeAssetDatabaseInfo request structure.
 * @class
 */
class DescribeAssetDatabaseInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Database ID
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ModifyFileTamperEvents response structure.
 * @class
 */
class ModifyFileTamperEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetDatabaseList response structure.
 * @class
 */
class ExportAssetDatabaseListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetUserCount request structure.
 * @class
 */
class DescribeAssetUserCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Search all account lists containing the name in the name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * CreateRansomDefenseStrategy response structure.
 * @class
 */
class CreateRansomDefenseStrategyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulDefencePluginEvent request structure.
 * @class
 */
class ExportVulDefencePluginEventRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Keywords: IP or host name for fuzzy match, Quuid, Exception, Status for precise match
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Export fields and export all by default.
         * @type {Array.<string> || null}
         */
        this.Where = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Where = 'Where' in params ? params.Where : null;

    }
}

/**
 * DescribeRansomDefenseRollBackTaskList request structure.
 * @class
 */
class DescribeRansomDefenseRollBackTaskListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum number is 100.)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Ips- string- string- host name</li>
<li>Status - Uint64: 0 - in progress; 1 - succeeded; 2 failed</li>
<li>Names - String - host name</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, support CreateTime, ModifyTime.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeWarningHostConfig request structure.
 * @class
 */
class DescribeWarningHostConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm type
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Limit per Page, 0 for no paging.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination offset. The default is 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * High-risk command policy
 * @class
 */
class BashPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 1: valid; 0: invalid
         * @type {number || null}
         */
        this.Enable = null;

        /**
         * 0: blocklist; 1: allowlist
         * @type {number || null}
         */
        this.White = null;

        /**
         * 0: alarm; 1: allowlist; 2: intercept
         * @type {number || null}
         */
        this.BashAction = null;

        /**
         * Regular expression
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Risk level (0: none; 1: high-risk; 2: medium-risk; 3: low-risk)
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Effective scope (0: a group of QUUID; 1: all professional editions (including ultimate edition); 2: all ultimate editions; 3: all hosts)
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Policy description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Descript = null;

        /**
         * When it is added to the allowlist, the EventId needs to be passed in.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Whether to process old events as allowlisted ones: 0 - no; 1 - yes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DealOldEvents = null;

        /**
         * A collection of QUUIDs for effective hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Policy type: 0 - system; 1 - user
         * @type {number || null}
         */
        this.Category = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Compatibility with older versions may be needed.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Enable = 'Enable' in params ? params.Enable : null;
        this.White = 'White' in params ? params.White : null;
        this.BashAction = 'BashAction' in params ? params.BashAction : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Descript = 'Descript' in params ? params.Descript : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.Category = 'Category' in params ? params.Category : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;

    }
}

/**
 * ModifyBanWhiteList response structure.
 * @class
 */
class ModifyBanWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetWebServiceInfoList response structure.
 * @class
 */
class ExportAssetWebServiceInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetMachineList response structure.
 * @class
 */
class ExportAssetMachineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportSecurityTrends response structure.
 * @class
 */
class ExportSecurityTrendsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export file download link.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeReverseShellEventInfo request structure.
 * @class
 */
class DescribeReverseShellEventInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ModifyMalwareTimingScanSettings response structure.
 * @class
 */
class ModifyMalwareTimingScanSettingsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRiskDnsInfo response structure.
 * @class
 */
class DescribeRiskDnsInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request event details
         * @type {RiskDnsList || null}
         */
        this.RiskDnsInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RiskDnsInfo) {
            let obj = new RiskDnsList();
            obj.deserialize(params.RiskDnsInfo)
            this.RiskDnsInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRiskProcessEvents request structure.
 * @class
 */
class ExportRiskProcessEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>HostId - String - Required: No - Host ID</li>
<li>IpOrName - String - whether required: no - host IP or host name</li>
<li>VirusName - String - whether required: no - virus name</li>
<li>ProcessId - String - whether required: no - process ID</li>
<li>ProcessPath - String - whether required: no - process path</li>
<li>BeginTime - String - whether required: no - process startup time - begin</li>
<li>BeginTime - String - whether required: no - process startup time - end</li>
<li>Status - String - whether required: no - filter by status: 0 - pending; 1 - under detection; 2 - detected; 3 - exited; 4 - trusted</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: [ASC: ascending order|DESC: descending order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * [StartTime: Process start time | DetectTime: Last detection time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeLogKafkaDeliverInfo request structure.
 * @class
 */
class DescribeLogKafkaDeliverInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeBaselineWeakPasswordList response structure.
 * @class
 */
class DescribeBaselineWeakPasswordListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * None
         * @type {Array.<BaselineWeakPassword> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BaselineWeakPassword();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteNonlocalLoginPlaces response structure.
 * @class
 */
class DeleteNonlocalLoginPlacesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetMachineDetail response structure.
 * @class
 */
class ExportAssetMachineDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download link
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLogKafkaAccess response structure.
 * @class
 */
class ModifyLogKafkaAccessResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteMalwareScanTask response structure.
 * @class
 */
class DeleteMalwareScanTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Trojan allowlist information
 * @class
 */
class MalwareWhiteListInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CVM QUUID (Separate multiple items with commas.)
         * @type {string || null}
         */
        this.QuuidList = null;

        /**
         * md5 list (Separate multiple items with commas.)
         * @type {string || null}
         */
        this.Md5List = null;

        /**
         * Whether applies all hosts: 0 - no; 1 - yes
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Allowlist mode: 0 - MD5; 1 - customization
         * @type {number || null}
         */
        this.Mode = null;

        /**
         * Match mode: 0 - precise match; 1 - fuzzy match
         * @type {number || null}
         */
        this.MatchType = null;

        /**
         * File name (Separate multiple items with commas.)
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File directory (Separate multiple items with commas.)
         * @type {string || null}
         */
        this.FileDirectory = null;

        /**
         * File suffix (Separate multiple items with commas.)
         * @type {string || null}
         */
        this.FileExtension = null;

        /**
         * Rule creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Affected records
         * @type {number || null}
         */
        this.EventsCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.Md5List = 'Md5List' in params ? params.Md5List : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.MatchType = 'MatchType' in params ? params.MatchType : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileDirectory = 'FileDirectory' in params ? params.FileDirectory : null;
        this.FileExtension = 'FileExtension' in params ? params.FileExtension : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.EventsCount = 'EventsCount' in params ? params.EventsCount : null;

    }
}

/**
 * DescribeBaselineDetail response structure.
 * @class
 */
class DescribeBaselineDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {BaselineDetail || null}
         */
        this.BaselineDetail = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BaselineDetail) {
            let obj = new BaselineDetail();
            obj.deserialize(params.BaselineDetail)
            this.BaselineDetail = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookReceiver response structure.
 * @class
 */
class DescribeWebHookReceiverResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm recipient list
         * @type {Array.<WebHookReceiver> || null}
         */
        this.List = null;

        /**
         * Number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new WebHookReceiver();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAttackEvents response structure.
 * @class
 */
class ExportAttackEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportIgnoreRuleEffectHostList response structure.
 * @class
 */
class ExportIgnoreRuleEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Region information
 * @class
 */
class ScreenRegionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region identifiers, such as ap-guangzhou, ap-shanghai, and ap-beijing
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Chinese name of region, such as South China (Guangzhou), East China (Shanghai Finance), and North China (Beijing)
         * @type {string || null}
         */
        this.RegionName = null;

        /**
         * Region ID
         * @type {number || null}
         */
        this.RegionId = null;

        /**
         * Region code, such as gz, sh, and bj
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * English name of the region
         * @type {string || null}
         */
        this.RegionNameEn = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Region = 'Region' in params ? params.Region : null;
        this.RegionName = 'RegionName' in params ? params.RegionName : null;
        this.RegionId = 'RegionId' in params ? params.RegionId : null;
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.RegionNameEn = 'RegionNameEn' in params ? params.RegionNameEn : null;

    }
}

/**
 * DescribeBaselinePolicyList response structure.
 * @class
 */
class DescribeBaselinePolicyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * None
         * @type {Array.<BaselinePolicy> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BaselinePolicy();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBanRegions response structure.
 * @class
 */
class DescribeBanRegionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region information list
         * @type {Array.<RegionSet> || null}
         */
        this.RegionSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RegionSet) {
            this.RegionSet = new Array();
            for (let z in params.RegionSet) {
                let obj = new RegionSet();
                obj.deserialize(params.RegionSet[z]);
                this.RegionSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogStorageRecord response structure.
 * @class
 */
class DescribeLogStorageRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Storage amount record
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<LogStorageRecord> || null}
         */
        this.Records = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Records) {
            this.Records = new Array();
            for (let z in params.Records) {
                let obj = new LogStorageRecord();
                obj.deserialize(params.Records[z]);
                this.Records.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeletePrivilegeEvents response structure.
 * @class
 */
class DeletePrivilegeEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Top 5 server risk entities
 * @class
 */
class VulHostTopInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Vulnerability level and quantity statistics list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulLevelCountInfo> || null}
         */
        this.VulLevelList = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Top ratings
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Score = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostName = 'HostName' in params ? params.HostName : null;

        if (params.VulLevelList) {
            this.VulLevelList = new Array();
            for (let z in params.VulLevelList) {
                let obj = new VulLevelCountInfo();
                obj.deserialize(params.VulLevelList[z]);
                this.VulLevelList.push(obj);
            }
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Score = 'Score' in params ? params.Score : null;

    }
}

/**
 * Order Modification Parameter Object
 * @class
 */
class OrderModifyObject extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * New Product Identification. PRO_VERSION: Professional Edition; FLAGSHIP: Premium Edition
         * @type {string || null}
         */
        this.NewSubProductCode = null;

        /**
         * Scale-up/Scale-down Count, which is ignored for reconfiguration sub-product
         * @type {number || null}
         */
        this.InquireNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.NewSubProductCode = 'NewSubProductCode' in params ? params.NewSubProductCode : null;
        this.InquireNum = 'InquireNum' in params ? params.InquireNum : null;

    }
}

/**
 * DescribeRansomDefenseRollBackTaskList response structure.
 * @class
 */
class DescribeRansomDefenseRollBackTaskListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseRollbackTask> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseRollbackTask();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Detailed node information
 * @class
 */
class VertexDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Node type. process - 1; network - 2; file - 3; SSH - 4
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Time used for each node type, which is in the format of 2022-11-29 00:00:00.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Time = null;

        /**
         * Alarm information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AlarmInfo> || null}
         */
        this.AlarmInfo = null;

        /**
         * Process name, which is effective when the node type is process.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ProcName = null;

        /**
         * Command line, which is effective when the node type is process.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * Process ID, which is effective when the node type is process.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * File MD5, which is effective when the node type is file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileMd5 = null;

        /**
         * Content written to the file, which is effective when the node type is file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileContent = null;

        /**
         * File path, which is effective when the node type is file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * File creation time, which is effective when the node type is file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileCreateTime = null;

        /**
         * Request destination address, which is effective when the node type is network.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Address = null;

        /**
         * Target port, which is effective when the node type is network.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Log-in source IP, which is effective when the node type is SSH.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SrcIP = null;

        /**
         * Log-in username and user group, which is effective when the node type is SSH.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.User = null;

        /**
         * Vulnerability name, which is effective when the node type is vulnerability.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * Vulnerability exploitation time, which is effective when the node type is vulnerability.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulTime = null;

        /**
         * HTTP request content, which is effective when the node type is vulnerability.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HttpContent = null;

        /**
         * Vulnerability exploiter source IP, which is effective when the node type is vulnerability.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VulSrcIP = null;

        /**
         * Node ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VertexId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Time = 'Time' in params ? params.Time : null;

        if (params.AlarmInfo) {
            this.AlarmInfo = new Array();
            for (let z in params.AlarmInfo) {
                let obj = new AlarmInfo();
                obj.deserialize(params.AlarmInfo[z]);
                this.AlarmInfo.push(obj);
            }
        }
        this.ProcName = 'ProcName' in params ? params.ProcName : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.FileMd5 = 'FileMd5' in params ? params.FileMd5 : null;
        this.FileContent = 'FileContent' in params ? params.FileContent : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.FileCreateTime = 'FileCreateTime' in params ? params.FileCreateTime : null;
        this.Address = 'Address' in params ? params.Address : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.SrcIP = 'SrcIP' in params ? params.SrcIP : null;
        this.User = 'User' in params ? params.User : null;
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.VulTime = 'VulTime' in params ? params.VulTime : null;
        this.HttpContent = 'HttpContent' in params ? params.HttpContent : null;
        this.VulSrcIP = 'VulSrcIP' in params ? params.VulSrcIP : null;
        this.VertexId = 'VertexId' in params ? params.VertexId : null;

    }
}

/**
 * ExportAssetEnvList request structure.
 * @class
 */
class ExportAssetEnvListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - string - required: no - environment variable name</li>
<li>Type - int - required: no - type: 0 - user variable; 1 - system variable</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVulEffectHostList response structure.
 * @class
 */
class DescribeVulEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of lists
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of affected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulEffectHostList> || null}
         */
        this.VulEffectHostList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.VulEffectHostList) {
            this.VulEffectHostList = new Array();
            for (let z in params.VulEffectHostList) {
                let obj = new VulEffectHostList();
                obj.deserialize(params.VulEffectHostList[z]);
                this.VulEffectHostList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of the region list
 * @class
 */
class RegionListDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine type
CVM, Tencent Cloud Virtual Machine
LH, TencentCloud Lighthouse
ECM, Tencent Cloud Edge Computing Machine
BM, Tencent BM 1.0
Other, Other servers (non-Tencent Cloud)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * 0 Tencent Cloud
1 IDC
2 Alibaba Cloud
3 Huawei Cloud
4 Amazon
5 Microsoft
6 Google
7 Oracle
8 Digital Ocean
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CloudFrom = null;

        /**
         * List of regions
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RegionInfo> || null}
         */
        this.RegionList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.CloudFrom = 'CloudFrom' in params ? params.CloudFrom : null;

        if (params.RegionList) {
            this.RegionList = new Array();
            for (let z in params.RegionList) {
                let obj = new RegionInfo();
                obj.deserialize(params.RegionList[z]);
                this.RegionList.push(obj);
            }
        }

    }
}

/**
 * DescribeSearchLogs request structure.
 * @class
 */
class DescribeSearchLogsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ScanVulSetting response structure.
 * @class
 */
class ScanVulSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetJarInfo response structure.
 * @class
 */
class DescribeAssetJarInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * JAR package details
         * @type {AssetJarDetail || null}
         */
        this.Jar = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Jar) {
            let obj = new AssetJarDetail();
            obj.deserialize(params.Jar)
            this.Jar = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulInfoCvss request structure.
 * @class
 */
class DescribeVulInfoCvssRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;

    }
}

/**
 * SwitchBashRules response structure.
 * @class
 */
class SwitchBashRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeFileTamperRules response structure.
 * @class
 */
class DescribeFileTamperRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of rules
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<FileTamperRuleInfo> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new FileTamperRuleInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeComponentStatistics request structure.
 * @class
 */
class DescribeComponentStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
ComponentName - String - required: no - component name
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeAssetProcessCount request structure.
 * @class
 */
class DescribeAssetProcessCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Search and return a list of all process names containing Name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * ModifyBanStatus response structure.
 * @class
 */
class ModifyBanStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLoginWhiteList response structure.
 * @class
 */
class DescribeLoginWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Cross-region log-in allowlist array
         * @type {Array.<LoginWhiteLists> || null}
         */
        this.LoginWhiteLists = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.LoginWhiteLists) {
            this.LoginWhiteLists = new Array();
            for (let z in params.LoginWhiteLists) {
                let obj = new LoginWhiteLists();
                obj.deserialize(params.LoginWhiteLists[z]);
                this.LoginWhiteLists.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeUsualLoginPlaces request structure.
 * @class
 */
class DescribeUsualLoginPlacesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CWPP client UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * ModifyWebHookReceiver request structure.
 * @class
 */
class ModifyWebHookReceiverRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * id
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Receiver name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * webhook URL
         * @type {string || null}
         */
        this.Addr = null;

        /**
         * Whether to modify
         * @type {boolean || null}
         */
        this.IsModify = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Addr = 'Addr' in params ? params.Addr : null;
        this.IsModify = 'IsModify' in params ? params.IsModify : null;

    }
}

/**
 * ExportAssetInitServiceList response structure.
 * @class
 */
class ExportAssetInitServiceListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanMalwareSchedule response structure.
 * @class
 */
class DescribeScanMalwareScheduleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Scan progress (unit: %)
         * @type {number || null}
         */
        this.Schedule = null;

        /**
         * Number of risk files, which is only available after the scan is completed.
         * @type {number || null}
         */
        this.RiskFileNumber = null;

        /**
         * Whether scan in progress
         * @type {boolean || null}
         */
        this.IsSchedule = null;

        /**
         * 0 - never scanned; 1 - scan in progress; 2 - scan completed; 3 - stop in progress; 4 - stop completed
         * @type {number || null}
         */
        this.ScanStatus = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Schedule = 'Schedule' in params ? params.Schedule : null;
        this.RiskFileNumber = 'RiskFileNumber' in params ? params.RiskFileNumber : null;
        this.IsSchedule = 'IsSchedule' in params ? params.IsSchedule : null;
        this.ScanStatus = 'ScanStatus' in params ? params.ScanStatus : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseEventsList request structure.
 * @class
 */
class ExportRansomDefenseEventsListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>HostName- string- host name</li>
<li>Status - Uint64: 0 - pending; 1 processed; 2 -trusted</li>
<li>HostIp - String - host IP</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field, supporting CreateTime
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeScreenProtectionCnt request structure.
 * @class
 */
class DescribeScreenProtectionCntRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Asset management Web site list information
 * @class
 */
class AssetWebLocationBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Domain name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Site port
         * @type {string || null}
         */
        this.Port = null;

        /**
         * Site protocol
         * @type {string || null}
         */
        this.Proto = null;

        /**
         * Service type
         * @type {string || null}
         */
        this.ServiceType = null;

        /**
         * Number of site paths
         * @type {number || null}
         */
        this.PathCount = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Home directory
         * @type {string || null}
         */
        this.MainPath = null;

        /**
         * Home directory owner
         * @type {string || null}
         */
        this.MainPathOwner = null;

        /**
         * Owner permissions
         * @type {string || null}
         */
        this.Permission = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Web site ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether the web service is newly added [0 - no|1 - yes]
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.Proto = 'Proto' in params ? params.Proto : null;
        this.ServiceType = 'ServiceType' in params ? params.ServiceType : null;
        this.PathCount = 'PathCount' in params ? params.PathCount : null;
        this.User = 'User' in params ? params.User : null;
        this.MainPath = 'MainPath' in params ? params.MainPath : null;
        this.MainPathOwner = 'MainPathOwner' in params ? params.MainPathOwner : null;
        this.Permission = 'Permission' in params ? params.Permission : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeBaselineItemList request structure.
 * @class
 */
class DescribeBaselineItemListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>PolicyId - int64 - required: no - policy ID</li>
<li>RuleId - int64 - required: no - rule ID</li>
<li>HostId - string - required: no - host ID</li>
<li>HostName - string - required: no - host name</li>
<li>HostIp - string - required: no - host IP</li>
<li>ItemId - String - required: no - detection item ID</li>
<li>ItemName - String - required: no - item name</li>
<li>DetectStatus - int - required: no - detection status [0: not passed|3: passed|5: detecting]</li>
<li>Level - int - required: no - risk level</li>
<li>StartTime - string - required: no - start time</li>
<li>EndTime - string - required: no - end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting columns
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeScreenHostInvasion request structure.
 * @class
 */
class DescribeScreenHostInvasionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * High-risk command rules
 * @class
 */
class BashRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Risk level (0: none, 1: high-risk, 2: medium-risk, 3: low-risk)
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Regular expression
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Rule description
         * @type {string || null}
         */
        this.Decription = null;

        /**
         * Operator
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * Whether a global rule
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Status (0: valid; 1: invalid)
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.Hostip = null;

        /**
         * Arrays of UUIDs for servers to be effective
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * 0= blocklist; 1= allowlist
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.White = null;

        /**
         * Whether to process previous events: 0: do not process; 1: process
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DealOldEvents = null;

        /**
         * Rule description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.Decription = 'Decription' in params ? params.Decription : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Hostip = 'Hostip' in params ? params.Hostip : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.White = 'White' in params ? params.White : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * ExportVulInfo request structure.
 * @class
 */
class ExportVulInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;

    }
}

/**
 * DescribeAssetUserCount response structure.
 * @class
 */
class DescribeAssetUserCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of accounts
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Users = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Users) {
            this.Users = new Array();
            for (let z in params.Users) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Users[z]);
                this.Users.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenBroadcasts request structure.
 * @class
 */
class DescribeScreenBroadcastsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * CreateSearchLog response structure.
 * @class
 */
class CreateSearchLogResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: succeeded; 	non-zero: failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRiskDnsPolicyList response structure.
 * @class
 */
class DescribeRiskDnsPolicyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Data list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RiskDnsPolicy> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RiskDnsPolicy();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSecurityTrends response structure.
 * @class
 */
class DescribeSecurityTrendsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Array of counted Trojan events
         * @type {Array.<SecurityTrend> || null}
         */
        this.Malwares = null;

        /**
         * Array of counted cross-region log-in events
         * @type {Array.<SecurityTrend> || null}
         */
        this.NonLocalLoginPlaces = null;

        /**
         * Array of counted password cracking events
         * @type {Array.<SecurityTrend> || null}
         */
        this.BruteAttacks = null;

        /**
         * Array of counted vulnerabilities
         * @type {Array.<SecurityTrend> || null}
         */
        this.Vuls = null;

        /**
         * Array of counted baselines
         * @type {Array.<SecurityTrend> || null}
         */
        this.BaseLines = null;

        /**
         * Array of counted malicious requests
         * @type {Array.<SecurityTrend> || null}
         */
        this.MaliciousRequests = null;

        /**
         * Array of counted high-risk command
         * @type {Array.<SecurityTrend> || null}
         */
        this.HighRiskBashs = null;

        /**
         * Array of counted reverse shell
         * @type {Array.<SecurityTrend> || null}
         */
        this.ReverseShells = null;

        /**
         * Array of counted local privilege escalation
         * @type {Array.<SecurityTrend> || null}
         */
        this.PrivilegeEscalations = null;

        /**
         * Array of counted network attacks
         * @type {Array.<SecurityTrend> || null}
         */
        this.CyberAttacks = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Malwares) {
            this.Malwares = new Array();
            for (let z in params.Malwares) {
                let obj = new SecurityTrend();
                obj.deserialize(params.Malwares[z]);
                this.Malwares.push(obj);
            }
        }

        if (params.NonLocalLoginPlaces) {
            this.NonLocalLoginPlaces = new Array();
            for (let z in params.NonLocalLoginPlaces) {
                let obj = new SecurityTrend();
                obj.deserialize(params.NonLocalLoginPlaces[z]);
                this.NonLocalLoginPlaces.push(obj);
            }
        }

        if (params.BruteAttacks) {
            this.BruteAttacks = new Array();
            for (let z in params.BruteAttacks) {
                let obj = new SecurityTrend();
                obj.deserialize(params.BruteAttacks[z]);
                this.BruteAttacks.push(obj);
            }
        }

        if (params.Vuls) {
            this.Vuls = new Array();
            for (let z in params.Vuls) {
                let obj = new SecurityTrend();
                obj.deserialize(params.Vuls[z]);
                this.Vuls.push(obj);
            }
        }

        if (params.BaseLines) {
            this.BaseLines = new Array();
            for (let z in params.BaseLines) {
                let obj = new SecurityTrend();
                obj.deserialize(params.BaseLines[z]);
                this.BaseLines.push(obj);
            }
        }

        if (params.MaliciousRequests) {
            this.MaliciousRequests = new Array();
            for (let z in params.MaliciousRequests) {
                let obj = new SecurityTrend();
                obj.deserialize(params.MaliciousRequests[z]);
                this.MaliciousRequests.push(obj);
            }
        }

        if (params.HighRiskBashs) {
            this.HighRiskBashs = new Array();
            for (let z in params.HighRiskBashs) {
                let obj = new SecurityTrend();
                obj.deserialize(params.HighRiskBashs[z]);
                this.HighRiskBashs.push(obj);
            }
        }

        if (params.ReverseShells) {
            this.ReverseShells = new Array();
            for (let z in params.ReverseShells) {
                let obj = new SecurityTrend();
                obj.deserialize(params.ReverseShells[z]);
                this.ReverseShells.push(obj);
            }
        }

        if (params.PrivilegeEscalations) {
            this.PrivilegeEscalations = new Array();
            for (let z in params.PrivilegeEscalations) {
                let obj = new SecurityTrend();
                obj.deserialize(params.PrivilegeEscalations[z]);
                this.PrivilegeEscalations.push(obj);
            }
        }

        if (params.CyberAttacks) {
            this.CyberAttacks = new Array();
            for (let z in params.CyberAttacks) {
                let obj = new SecurityTrend();
                obj.deserialize(params.CyberAttacks[z]);
                this.CyberAttacks.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of high-risk command data
 * @class
 */
class BashEventsInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Yunjing ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Platform type
         * @type {number || null}
         */
        this.Platform = null;

        /**
         * Executed commands
         * @type {string || null}
         */
        this.BashCmd = null;

        /**
         * Rule ID equals 0 indicating that the rule has been deleted or the effective scope has been modified.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Rule level: 1 - high-risk 2 - medium-risk; 3 - low-risk
         * @type {number || null}
         */
        this.RuleLevel = null;

        /**
         * Processing status. 0: Pending; 1: Processed; 2: Whitelisted; 3: Ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Process name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Exe = null;

        /**
         * Processing time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Rule category: 0 - system rule; 1 - user rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Automatically generated regular expression
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RegexBashCmd = null;

        /**
         * Process tree json  pid: process ID; exe: file path; account: groups and users to which the process belongs; cmdline: command execution; ssh_service: ssh service IP, ssh_source: log-in source
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Recommended solution
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HarmDescribe = null;

        /**
         * Tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Reference link
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.References = null;

        /**
         * Host public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host online status: OFFLINE  ONLINE
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Log-in user
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.User = null;

        /**
         * Process ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * Data source
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DetectBy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Platform = 'Platform' in params ? params.Platform : null;
        this.BashCmd = 'BashCmd' in params ? params.BashCmd : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.RuleLevel = 'RuleLevel' in params ? params.RuleLevel : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Exe = 'Exe' in params ? params.Exe : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.RegexBashCmd = 'RegexBashCmd' in params ? params.RegexBashCmd : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.HarmDescribe = 'HarmDescribe' in params ? params.HarmDescribe : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.References = 'References' in params ? params.References : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.User = 'User' in params ? params.User : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;

    }
}

/**
 * StopNoticeBanTips response structure.
 * @class
 */
class StopNoticeBanTipsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on resource management system installation package list
 * @class
 */
class AssetSystemPackageInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Database name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Installation time
         * @type {string || null}
         */
        this.InstallTime = null;

        /**
         * Type
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether newly added [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Agent Id
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.InstallTime = 'InstallTime' in params ? params.InstallTime : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeEmergencyVulList request structure.
 * @class
 */
class DescribeEmergencyVulListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Status - String - required: Yes - vulnerability status filter: 0: not detected; 1: at risk; 2: no risk; 3: show progress while detecting</li>
<li>Level - String - required: no - filter by vulnerability level: 1 - low; 2 - medium; 3 - high; 4 - prompt</li>
<li>VulName - String - required: no - vulnerability name search</li>
<li>Uuids- String - required: no - host uuid</li>
<li>IsSupportDefense - int- required: no - whether to support defense: 0: no; 1: yes</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: desc and asc
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field PublishDate  LastScanTime HostCount
         * @type {string || null}
         */
        this.By = null;

        /**
         * Whether hot spot vulnerabilities
         * @type {boolean || null}
         */
        this.HotspotAttack = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;
        this.HotspotAttack = 'HotspotAttack' in params ? params.HotspotAttack : null;

    }
}

/**
 * DescribeSecurityDynamics response structure.
 * @class
 */
class DescribeSecurityDynamicsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security event message array
         * @type {Array.<SecurityDynamic> || null}
         */
        this.SecurityDynamics = null;

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SecurityDynamics) {
            this.SecurityDynamics = new Array();
            for (let z in params.SecurityDynamics) {
                let obj = new SecurityDynamic();
                obj.deserialize(params.SecurityDynamics[z]);
                this.SecurityDynamics.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteReverseShellEvents response structure.
 * @class
 */
class DeleteReverseShellEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetEnvList response structure.
 * @class
 */
class ExportAssetEnvListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Authorize binding details
 * @class
 */
class LicenseBindDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine Alias
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Machine Public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Machine Private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * CVM UUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * CWPP client UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Tag information
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * CWPP client status: OFFLINE, ONLINE, and UNINSTALL.
         * @type {string || null}
         */
        this.AgentStatus = null;

        /**
         * Whether unbinding is allowed: false - unbinding is not allowed.
         * @type {boolean || null}
         */
        this.IsUnBind = null;

        /**
         * Whether rebinding is allowed: false - rebinding is not allowed.
         * @type {boolean || null}
         */
        this.IsSwitchBind = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.AgentStatus = 'AgentStatus' in params ? params.AgentStatus : null;
        this.IsUnBind = 'IsUnBind' in params ? params.IsUnBind : null;
        this.IsSwitchBind = 'IsSwitchBind' in params ? params.IsSwitchBind : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeAttackTrends response structure.
 * @class
 */
class DescribeAttackTrendsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack Trend Statistics (Days)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<NetAttackTrend> || null}
         */
        this.NetAttackTrend = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.NetAttackTrend) {
            this.NetAttackTrend = new Array();
            for (let z in params.NetAttackTrend) {
                let obj = new NetAttackTrend();
                obj.deserialize(params.NetAttackTrend[z]);
                this.NetAttackTrend.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulTrend request structure.
 * @class
 */
class DescribeVulTrendRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyLogStorageConfig response structure.
 * @class
 */
class ModifyLogStorageConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackStatistics request structure.
 * @class
 */
class DescribeAttackStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ExportFileTamperRules request structure.
 * @class
 */
class ExportFileTamperRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>RuleCategory- string- rule category: 0 = system rule; 1 = user rule</li>
<li>Name - String - Rule name</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * AddLoginWhiteLists response structure.
 * @class
 */
class AddLoginWhiteListsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Prompt list of duplicate addition
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<DuplicateHosts> || null}
         */
        this.DuplicateHosts = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.DuplicateHosts) {
            this.DuplicateHosts = new Array();
            for (let z in params.DuplicateHosts) {
                let obj = new DuplicateHosts();
                obj.deserialize(params.DuplicateHosts[z]);
                this.DuplicateHosts.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyLogKafkaState request structure.
 * @class
 */
class ModifyLogKafkaStateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance name, e.g. CWPP test environment
         * @type {string || null}
         */
        this.KafkaEnvName = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.KafkaId = null;

        /**
         * Access method: 1 - public network domain name access; 2 - support environment access
         * @type {number || null}
         */
        this.AccessType = null;

        /**
         * Access address
         * @type {string || null}
         */
        this.AccessAddr = null;

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * Region
         * @type {string || null}
         */
        this.Zone = null;

        /**
         * Availability zone
         * @type {string || null}
         */
        this.Az = null;

        /**
         * Network
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Subnet
         * @type {string || null}
         */
        this.SubnetId = null;

        /**
         * Shipping status: 1 - healthy; 2 - alarm; 3 - abnormal
         * @type {number || null}
         */
        this.DeliverStatus = null;

        /**
         * Kafka edition
         * @type {string || null}
         */
        this.InsVersion = null;

        /**
         * Peak bandwidth
         * @type {number || null}
         */
        this.BandWidth = null;

        /**
         * Disk capacity
         * @type {number || null}
         */
        this.DiskSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.KafkaEnvName = 'KafkaEnvName' in params ? params.KafkaEnvName : null;
        this.KafkaId = 'KafkaId' in params ? params.KafkaId : null;
        this.AccessType = 'AccessType' in params ? params.AccessType : null;
        this.AccessAddr = 'AccessAddr' in params ? params.AccessAddr : null;
        this.Username = 'Username' in params ? params.Username : null;
        this.Zone = 'Zone' in params ? params.Zone : null;
        this.Az = 'Az' in params ? params.Az : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.SubnetId = 'SubnetId' in params ? params.SubnetId : null;
        this.DeliverStatus = 'DeliverStatus' in params ? params.DeliverStatus : null;
        this.InsVersion = 'InsVersion' in params ? params.InsVersion : null;
        this.BandWidth = 'BandWidth' in params ? params.BandWidth : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;

    }
}

/**
 * List information on resource management Web service 
 * @class
 */
class AssetWebServiceBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Private IP address of a host
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address of a host
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Database name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Binary path
         * @type {string || null}
         */
        this.BinPath = null;

        /**
         * Startup user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Installation path
         * @type {string || null}
         */
        this.InstallPath = null;

        /**
         * Configuration path
         * @type {string || null}
         */
        this.ConfigPath = null;

        /**
         * Number of associated processes
         * @type {number || null}
         */
        this.ProcessCount = null;

        /**
         * Web Service ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether newly added [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.BinPath = 'BinPath' in params ? params.BinPath : null;
        this.User = 'User' in params ? params.User : null;
        this.InstallPath = 'InstallPath' in params ? params.InstallPath : null;
        this.ConfigPath = 'ConfigPath' in params ? params.ConfigPath : null;
        this.ProcessCount = 'ProcessCount' in params ? params.ProcessCount : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Malicious request policy
 * @class
 */
class RiskDnsPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.PolicyName = null;

        /**
         * Policy type [0: system; 1: user]
         * @type {number || null}
         */
        this.PolicyType = null;

        /**
         * Policy action [0: alarm; 1: allow; 2:intercept + alarm]
         * @type {number || null}
         */
        this.PolicyAction = null;

        /**
         * Host range [1: all Professional + Ultimate Editions|2: all Ultimate Editions|0: partial hosts]
         * @type {number || null}
         */
        this.HostScope = null;

        /**
         * Host ID
         * @type {Array.<string> || null}
         */
        this.HostIds = null;

        /**
         * Domain name (when used as an input parameter, it needs base64 encode.)
         * @type {Array.<string> || null}
         */
        this.Domains = null;

        /**
         * Whether effective [0: effective,1: not effective]
         * @type {number || null}
         */
        this.IsEnabled = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.PolicyId = null;

        /**
         * Policy description
         * @type {string || null}
         */
        this.PolicyDesc = null;

        /**
         * Whether to process previous events [0: no|1: yes]
         * @type {number || null}
         */
        this.IsDealOldEvent = null;

        /**
         * Update time
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyName = 'PolicyName' in params ? params.PolicyName : null;
        this.PolicyType = 'PolicyType' in params ? params.PolicyType : null;
        this.PolicyAction = 'PolicyAction' in params ? params.PolicyAction : null;
        this.HostScope = 'HostScope' in params ? params.HostScope : null;
        this.HostIds = 'HostIds' in params ? params.HostIds : null;
        this.Domains = 'Domains' in params ? params.Domains : null;
        this.IsEnabled = 'IsEnabled' in params ? params.IsEnabled : null;
        this.PolicyId = 'PolicyId' in params ? params.PolicyId : null;
        this.PolicyDesc = 'PolicyDesc' in params ? params.PolicyDesc : null;
        this.IsDealOldEvent = 'IsDealOldEvent' in params ? params.IsDealOldEvent : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DeleteAllJavaMemShells response structure.
 * @class
 */
class DeleteAllJavaMemShellsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalwareWhiteList request structure.
 * @class
 */
class DescribeMalwareWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Quantity of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>HostIp - String - required: no - host IP query</li>
<li>FileName - String - required: no - file name query</li>
<li>FileDirectory - String - required: no - file directory query </li>
<li>FileExtension - String - required: no - file extension query</li>
<li>Mode - String - required: no - rule type: 0 MD5; 1 customize</li>
<li>Md5 - String - required: no - MD5 query</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting columns: [EventsCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyUsersConfig request structure.
 * @class
 */
class ModifyUsersConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Configuration name
<li>license_monitor new authorization monitoring configuration: 0 - disable, 1 - enable</li>
         * @type {string || null}
         */
        this.ConfigName = null;

        /**
         * Configuration value
         * @type {string || null}
         */
        this.ConfigValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ConfigName = 'ConfigName' in params ? params.ConfigName : null;
        this.ConfigValue = 'ConfigValue' in params ? params.ConfigValue : null;

    }
}

/**
 * DescribeGeneralStat request structure.
 * @class
 */
class DescribeGeneralStatRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM type
<li>CVM: Indicates Tencent CVM.</li>
<li>BM: indicates Blackstone physical machine</li>
<li>ECM: indicates edge computing server</li>
<li>LH: indicates Tencent Cloud Lighthouse</li>
<li>Other: Indicates Hybrid cloud machines.</li>
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Machine region. Example: ap-guangzhou, ap-shanghai
         * @type {string || null}
         */
        this.MachineRegion = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;

    }
}

/**
 * DescribeHotVulTop request structure.
 * @class
 */
class DescribeHotVulTopRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * List of asset management startup services
 * @class
 */
class AssetInitServiceBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type:
1: Encoder
2: IE plugin
3: Network provider
4: Mirror hijacking
5: LSA provider
6:KnownDLLs
7: Start execution
8:WMI
9: Scheduled task
10: Winsock provider
11: Print monitor
12: Resource manager
13: Driver service
14: Log-in
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Default enabling status: 0 - disabled; 1 - enabled
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Startup user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Data update time
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether newly added [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Server Public IP
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Start at boot [0: No|1: Yes]
         * @type {number || null}
         */
        this.IsAutoRun = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.User = 'User' in params ? params.User : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.IsAutoRun = 'IsAutoRun' in params ? params.IsAutoRun : null;

    }
}

/**
 * DeleteBanWhiteList request structure.
 * @class
 */
class DeleteBanWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist ID list to be deleted (up to 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeAssetWebFrameCount request structure.
 * @class
 */
class DescribeAssetWebFrameCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Return a list of all Web frameworks containing Name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeIgnoreRuleEffectHostList request structure.
 * @class
 */
class DescribeIgnoreRuleEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameters (The maximum quantity is 100)
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Detection Item ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Filter criteria
<li>AliasName - String - host alias</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Host tag name
         * @type {Array.<string> || null}
         */
        this.TagNames = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.TagNames = 'TagNames' in params ? params.TagNames : null;

    }
}

/**
 * ExportAssetMachineList request structure.
 * @class
 */
class ExportAssetMachineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>IP - String - Required: No - Host IP</li>
<li>MachineName - String - Required: No - hostname</li>
<li>InstanceID - string - Required: No - Instance ID</li>
<li>OsType - String - required: no - Windows or Linux</li>
<li>CpuLoad - Int - required: no - 
0: 0% or unknown; 1: 0% to 20%
2: 20%~50%  3: 50%~80%
4: 80%~100%</li>
<li>DiskLoad - Int - required: no - 
0: 0% or unknown; 1: 0% to 20%
2: 20%~50%  3: 50%~80%
4: 80%~100%</li>
<li>MemLoad - Int - required: no - 
0: 0% or unknown; 1: 0% to 20%
2: 20%~50%  3: 50%~80%
4: 80%~100%</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method [FirstTime|PartitionCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Task list of downloaded logs
 * @class
 */
class ExportInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID of exported logs
         * @type {string || null}
         */
        this.ExportId = null;

        /**
         * Query statements of log export
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Filenames of exported logs
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Log file size
         * @type {number || null}
         */
        this.FileSize = null;

        /**
         * Sorting of log export time
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Log export format
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Number of logs to be exported
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Log download status. Processing: export in progress; Completed: export completed; Failed: export failed; Expired: log export expired (valid for 3 days).
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Start time of log export, with a millisecond-level UNIX timestamp
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End time of log export, with a millisecond-level UNIX timestamp
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Log export path
         * @type {string || null}
         */
        this.CosPath = null;

        /**
         * Creation time of log export
         * @type {string || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExportId = 'ExportId' in params ? params.ExportId : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileSize = 'FileSize' in params ? params.FileSize : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CosPath = 'CosPath' in params ? params.CosPath : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * DescribeScreenProtectionStat response structure.
 * @class
 */
class DescribeScreenProtectionStatResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * File scanning status. 0: never detected, or asset payment situation; 1: detected and malicious files exist; 2: detected and isolation protection is not enabled; 3: detected and protection is enabled with no risk.
Brute force crack status. 0: protection not enabled or asset payment situation; 1: protection enabled; 2: events pending to be processed exist
Vulnerability scan status. 0: never detected, or 0 asset payment situation; 1: vulnerability risks exist; 2: no risk
Baseline detection status. 0: never detected, or 0 asset payment situation; 1: baseline risks exist; 2: no risk
         * @type {Array.<ScreenProtection> || null}
         */
        this.Info = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Info) {
            this.Info = new Array();
            for (let z in params.Info) {
                let obj = new ScreenProtection();
                obj.deserialize(params.Info[z]);
                this.Info.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBaselineItemDetectList request structure.
 * @class
 */
class ExportBaselineItemDetectListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>HostId - string - required: no - host ID</li> <li>RuleId - int64 - required: no - rule ID</li> <li>IsPassed - int - required: no - pass or not</li> <li>RiskTier - int - required: no - risk level</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * 0: Filtered Result Export; 1: Export All
         * @type {number || null}
         */
        this.ExportAll = null;

        /**
         * 0: show the export interface; 1: export all result events
         * @type {number || null}
         */
        this.IsExportDetail = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ExportAll = 'ExportAll' in params ? params.ExportAll : null;
        this.IsExportDetail = 'IsExportDetail' in params ? params.IsExportDetail : null;

    }
}

/**
 * DescribeAttackSource request structure.
 * @class
 */
class DescribeAttackSourceRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Start date
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End date
         * @type {string || null}
         */
        this.EndDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;

    }
}

/**
 * DescribeMalwareInfo response structure.
 * @class
 */
class DescribeMalwareInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious file details
         * @type {MalwareInfo || null}
         */
        this.MalwareInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MalwareInfo) {
            let obj = new MalwareInfo();
            obj.deserialize(params.MalwareInfo)
            this.MalwareInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteRiskDnsPolicy response structure.
 * @class
 */
class DeleteRiskDnsPolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Batch add to allowlists
 * @class
 */
class DuplicateHosts extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quuid
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Uuid
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Id
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeLogStorageRecord request structure.
 * @class
 */
class DescribeLogStorageRecordRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ExportBaselineHostDetectList response structure.
 * @class
 */
class ExportBaselineHostDetectListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Number of events hitting allowlists
 * @class
 */
class MalwareWhiteListAffectEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Affected md5
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * File path
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * Add time
         * @type {string || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * CreateBanWhiteList request structure.
 * @class
 */
class CreateBanWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Block rules
         * @type {BanWhiteList || null}
         */
        this.Rules = null;

        /**
         * Event list ID, which is passed when the event list is allowlisted. After it is successfully allowlisted, the events in the list will be marked as whitelisted.
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Rules) {
            let obj = new BanWhiteList();
            obj.deserialize(params.Rules)
            this.Rules = obj;
        }
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DescribeMachineRiskCnt request structure.
 * @class
 */
class DescribeMachineRiskCntRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Uuids- String - required: no - host uuid</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportRansomDefenseStrategyMachines response structure.
 * @class
 */
class ExportRansomDefenseStrategyMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on TOP baseline detection item
 * @class
 */
class BaselineRuleTopInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline detection item name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Detection item hazard level
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Total number of events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventCount = null;

        /**
         * Detection Item ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.EventCount = 'EventCount' in params ? params.EventCount : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;

    }
}

/**
 * ExportAssetWebFrameList request structure.
 * @class
 */
class ExportAssetWebFrameListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - Required: No - Framework Name</li>
<li>Lang - String - Required: No - Framework Language: java/python</li>
<li>Type - String - Required: No - Service Type:
0: All
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional Sort: [FirstTime|JarCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeSecurityBroadcasts request structure.
 * @class
 */
class DescribeSecurityBroadcastsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of records to return, which is 10 by default, and 0 = all.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter release date: start time
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * Filter release date: end time
         * @type {string || null}
         */
        this.EndDate = null;

        /**
         * Filter security report type: 0 - emergency notification; 1 - feature update; 2 - industry honor; 3 - version release
         * @type {string || null}
         */
        this.BroadcastType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;
        this.BroadcastType = 'BroadcastType' in params ? params.BroadcastType : null;

    }
}

/**
 * DescribeVulDefenceEvent response structure.
 * @class
 */
class DescribeVulDefenceEventResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of data
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of vulnerability defense events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulDefenceEvent> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulDefenceEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBaselineEffectHostList response structure.
 * @class
 */
class ExportBaselineEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of high-risk command data (new)
 * @class
 */
class BashEventsInfoNew extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host ID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Platform type
         * @type {number || null}
         */
        this.Platform = null;

        /**
         * Executed commands
         * @type {string || null}
         */
        this.BashCmd = null;

        /**
         * Rule ID equals 0 indicating that the rule has been deleted or the effective scope has been modified.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Rule level: 1 - high-risk 2 - medium-risk; 3 - low-risk
         * @type {number || null}
         */
        this.RuleLevel = null;

        /**
         * Processing status: 0: Pending; 1: Processed; 2: Whitelisted; 3: Ignored
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Occurrence time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Process name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Exe = null;

        /**
         * Processing time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Rule category. 0 - system rule; 1 - user rule
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Automatically generated regular expression
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RegexBashCmd = null;

        /**
         * Process tree json  pid: process ID; exe: file path; account: groups and users to which the process belongs; cmdline: command execution; ssh_service: ssh service IP, ssh_source: log-in source
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Recommended solution
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HarmDescribe = null;

        /**
         * Tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Reference link
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.References = null;

        /**
         * Host public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host online status: OFFLINE; ONLINE
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Log-in user
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.User = null;

        /**
         * Process ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * 0: normal; 1: professional version; 2: ultimate edition
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.MachineType = null;

        /**
         * Source of Detection: 0: bash log; 1: real-time monitoring
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DetectBy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Platform = 'Platform' in params ? params.Platform : null;
        this.BashCmd = 'BashCmd' in params ? params.BashCmd : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.RuleLevel = 'RuleLevel' in params ? params.RuleLevel : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Exe = 'Exe' in params ? params.Exe : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;
        this.RegexBashCmd = 'RegexBashCmd' in params ? params.RegexBashCmd : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.HarmDescribe = 'HarmDescribe' in params ? params.HarmDescribe : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.References = 'References' in params ? params.References : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.User = 'User' in params ? params.User : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.DetectBy = 'DetectBy' in params ? params.DetectBy : null;

    }
}

/**
 * ModifyLogKafkaAccess request structure.
 * @class
 */
class ModifyLogKafkaAccessRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance name, e.g. CWPP test environment
         * @type {string || null}
         */
        this.KafkaEnvName = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.KafkaId = null;

        /**
         * Access method. 1 - public network domain name access; 2 - support environment access
         * @type {number || null}
         */
        this.AccessType = null;

        /**
         * Access address
         * @type {string || null}
         */
        this.AccessAddr = null;

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * 0 - without password; 1 - with password
         * @type {number || null}
         */
        this.HasPwd = null;

        /**
         * Log shipping type configuration details
         * @type {Array.<DeliverTypeDetails> || null}
         */
        this.DeliverTypeDetails = null;

        /**
         * Kafka version
         * @type {string || null}
         */
        this.InsVersion = null;

        /**
         * Region
         * @type {string || null}
         */
        this.Zone = null;

        /**
         * Availability zone
         * @type {string || null}
         */
        this.Az = null;

        /**
         * vpcid address
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Subnet ID
         * @type {string || null}
         */
        this.SubnetId = null;

        /**
         * Shipping status. 1 - healthy; 2 - alarm; 3 - abnormal
         * @type {number || null}
         */
        this.DeliverStatus = null;

        /**
         * Peak bandwidth
         * @type {number || null}
         */
        this.BandWidth = null;

        /**
         * Disk capacity
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * Password, AES encryption
         * @type {string || null}
         */
        this.Pwd = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.KafkaEnvName = 'KafkaEnvName' in params ? params.KafkaEnvName : null;
        this.KafkaId = 'KafkaId' in params ? params.KafkaId : null;
        this.AccessType = 'AccessType' in params ? params.AccessType : null;
        this.AccessAddr = 'AccessAddr' in params ? params.AccessAddr : null;
        this.Username = 'Username' in params ? params.Username : null;
        this.HasPwd = 'HasPwd' in params ? params.HasPwd : null;

        if (params.DeliverTypeDetails) {
            this.DeliverTypeDetails = new Array();
            for (let z in params.DeliverTypeDetails) {
                let obj = new DeliverTypeDetails();
                obj.deserialize(params.DeliverTypeDetails[z]);
                this.DeliverTypeDetails.push(obj);
            }
        }
        this.InsVersion = 'InsVersion' in params ? params.InsVersion : null;
        this.Zone = 'Zone' in params ? params.Zone : null;
        this.Az = 'Az' in params ? params.Az : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;
        this.SubnetId = 'SubnetId' in params ? params.SubnetId : null;
        this.DeliverStatus = 'DeliverStatus' in params ? params.DeliverStatus : null;
        this.BandWidth = 'BandWidth' in params ? params.BandWidth : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.Pwd = 'Pwd' in params ? params.Pwd : null;

    }
}

/**
 * Unprocessed security event statistics
 * @class
 */
class EventStat extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of events
         * @type {number || null}
         */
        this.EventsNum = null;

        /**
         * Number of affected hosts
         * @type {number || null}
         */
        this.MachineAffectNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventsNum = 'EventsNum' in params ? params.EventsNum : null;
        this.MachineAffectNum = 'MachineAffectNum' in params ? params.MachineAffectNum : null;

    }
}

/**
 * DescribeLicenseBindSchedule request structure.
 * @class
 */
class DescribeLicenseBindScheduleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Limit number, 10 by default.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter parameters
Status - binding progress status. 0 - in progress; 1 - completed; 2 - failed
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DeleteRiskDnsPolicy request structure.
 * @class
 */
class DeleteRiskDnsPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {Array.<number> || null}
         */
        this.PolicyIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyIds = 'PolicyIds' in params ? params.PolicyIds : null;

    }
}

/**
 * DescribeBruteAttackRules request structure.
 * @class
 */
class DescribeBruteAttackRulesRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeProcessStatistics response structure.
 * @class
 */
class DescribeProcessStatisticsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records in the process statistics list
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Array of list of counted processes
         * @type {Array.<ProcessStatistics> || null}
         */
        this.ProcessStatistics = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ProcessStatistics) {
            this.ProcessStatistics = new Array();
            for (let z in params.ProcessStatistics) {
                let obj = new ProcessStatistics();
                obj.deserialize(params.ProcessStatistics[z]);
                this.ProcessStatistics.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogIndex response structure.
 * @class
 */
class DescribeLogIndexResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether effective
         * @type {boolean || null}
         */
        this.Status = null;

        /**
         * Index rule
         * @type {RuleInfo || null}
         */
        this.Rule = null;

        /**
         * Index modification time, which is initially the index creation time.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

        if (params.Rule) {
            let obj = new RuleInfo();
            obj.deserialize(params.Rule)
            this.Rule = obj;
        }
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackVulTypeList response structure.
 * @class
 */
class DescribeAttackVulTypeListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Threat type list
         * @type {Array.<string> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.List = 'List' in params ? params.List : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of components affected by vulnerabilities
 * @class
 */
class VulEffectModuleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Component name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Affected host uuid
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Affected component version
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Component path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Component version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Fix Command
         * @type {string || null}
         */
        this.FixCmd = null;

        /**
         * Affected host quuid
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.FixCmd = 'FixCmd' in params ? params.FixCmd : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DescribeAssetWebAppPluginList response structure.
 * @class
 */
class DescribeAssetWebAppPluginListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebAppPluginInfo> || null}
         */
        this.Plugins = null;

        /**
         * Total number of partitions
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Plugins) {
            this.Plugins = new Array();
            for (let z in params.Plugins) {
                let obj = new AssetWebAppPluginInfo();
                obj.deserialize(params.Plugins[z]);
                this.Plugins.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebAppCount request structure.
 * @class
 */
class DescribeAssetWebAppCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Return a list of all Web applications containing Name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeAssetTypes request structure.
 * @class
 */
class DescribeAssetTypesRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Host information of Top server risks
 * @class
 */
class BaselineEventLevelInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventLevel = null;

        /**
         * Number of vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventLevel = 'EventLevel' in params ? params.EventLevel : null;
        this.EventCount = 'EventCount' in params ? params.EventCount : null;

    }
}

/**
 * DescribeMalwareFile request structure.
 * @class
 */
class DescribeMalwareFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan record ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeLoginWhiteCombinedList request structure.
 * @class
 */
class DescribeLoginWhiteCombinedListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>UserName - String - required: no - filter by username</li>
<li>ModifyBeginTime - String - required: no - filter by modification time; start time</li>
<li>ModifyEndTime - String - required: no - Filter by modification time; end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Baseline security user policy information
 * @class
 */
class Strategy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Policy ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Total number of baseline detection items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleCount = null;

        /**
         * Number of Hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Scan cycle
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ScanCycle = null;

        /**
         * Scan time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ScanAt = null;

        /**
         * Available or not?
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Enabled = null;

        /**
         * Pass rate
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PassRate = null;

        /**
         * Baseline ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CategoryIds = null;

        /**
         * Whether a default policy
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsDefault = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.RuleCount = 'RuleCount' in params ? params.RuleCount : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.ScanCycle = 'ScanCycle' in params ? params.ScanCycle : null;
        this.ScanAt = 'ScanAt' in params ? params.ScanAt : null;
        this.Enabled = 'Enabled' in params ? params.Enabled : null;
        this.PassRate = 'PassRate' in params ? params.PassRate : null;
        this.CategoryIds = 'CategoryIds' in params ? params.CategoryIds : null;
        this.IsDefault = 'IsDefault' in params ? params.IsDefault : null;

    }
}

/**
 * DeleteSearchTemplate response structure.
 * @class
 */
class DeleteSearchTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: succeeded; 	non-zero: failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteBashPolicies response structure.
 * @class
 */
class DeleteBashPoliciesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeEmergencyResponseList response structure.
 * @class
 */
class DescribeEmergencyResponseListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Emergency Response List
         * @type {Array.<EmergencyResponseInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new EmergencyResponseInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CWPP security trend data
 * @class
 */
class ScreenProtectionCnt extends  AbstractModel {
    constructor(){
        super();

        /**
         * cloud: Cloud Security Engine; detect: detection engine; defend: attack defense; threat: threat intelligence; analysis: abnormal analysis; ai: AI engine
         * @type {string || null}
         */
        this.Type = null;

        /**
         * cloud: Cloud Security Engine; detect: detection engine; defend: attack defense; threat: threat intelligence; analysis: abnormal analysis; ai: AI engine
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * List of asset management plan tasks
 * @class
 */
class AssetPlanTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Default enabling status. 1 - enabled; 2 - not enabled
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Execution cycle
         * @type {string || null}
         */
        this.Cycle = null;

        /**
         * Execute command or script
         * @type {string || null}
         */
        this.Command = null;

        /**
         * Startup user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Configuration file path
         * @type {string || null}
         */
        this.ConfigPath = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether newly added [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Server Public IP
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.Cycle = 'Cycle' in params ? params.Cycle : null;
        this.Command = 'Command' in params ? params.Command : null;
        this.User = 'User' in params ? params.User : null;
        this.ConfigPath = 'ConfigPath' in params ? params.ConfigPath : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Vulnerability defense trend page, which includes plugin status and attack defense trends. Trends are stored in three arrays of equal length, with elements corresponding one-to-one. If a certain day is missed, there will be missing data.
 * @class
 */
class VulDefenceOverview extends  AbstractModel {
    constructor(){
        super();

        /**
         * Defense switch: 0 - disable; 1 - enable
         * @type {number || null}
         */
        this.Enable = null;

        /**
         * Number of hosts with defense enabled
         * @type {number || null}
         */
        this.DefendHostCount = null;

        /**
         * Number of plugin exceptions
         * @type {number || null}
         */
        this.ExceptionCount = null;

        /**
         * Daily attack trends
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.AttackCounts = null;

        /**
         * Daily defense trends
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.DefendCounts = null;

        /**
         * Date
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Date = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Enable = 'Enable' in params ? params.Enable : null;
        this.DefendHostCount = 'DefendHostCount' in params ? params.DefendHostCount : null;
        this.ExceptionCount = 'ExceptionCount' in params ? params.ExceptionCount : null;
        this.AttackCounts = 'AttackCounts' in params ? params.AttackCounts : null;
        this.DefendCounts = 'DefendCounts' in params ? params.DefendCounts : null;
        this.Date = 'Date' in params ? params.Date : null;

    }
}

/**
 * DescribeFileTamperEventRuleInfo response structure.
 * @class
 */
class DescribeFileTamperEventRuleInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule details
         * @type {FileTamperRuleDetail || null}
         */
        this.FileTamperRuleDetail = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FileTamperRuleDetail) {
            let obj = new FileTamperRuleDetail();
            obj.deserialize(params.FileTamperRuleDetail)
            this.FileTamperRuleDetail = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteBaselinePolicy response structure.
 * @class
 */
class DeleteBaselinePolicyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyVulDefenceSetting request structure.
 * @class
 */
class ModifyVulDefenceSettingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Defense switch: 0 - off; 1 - on
         * @type {number || null}
         */
        this.Enable = null;

        /**
         * 1 - All Ultimate edition hosts; 0 - list of hosts with Quuids
         * @type {number || null}
         */
        this.Scope = null;

        /**
         * List of Ultimate Edition hosts within the scope
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * Exclude the list of Ultimate Edition hosts within the scope
         * @type {Array.<string> || null}
         */
        this.ExcludeInstanceIds = null;

        /**
         * New assets automatically include: 0 - Do not include, 1 - include.
         * @type {number || null}
         */
        this.AutoInclude = null;

        /**
         * List of Ultimate Edition hosts within the scope
         * @type {Array.<string> || null}
         */
        this.InstanceIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Enable = 'Enable' in params ? params.Enable : null;
        this.Scope = 'Scope' in params ? params.Scope : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.ExcludeInstanceIds = 'ExcludeInstanceIds' in params ? params.ExcludeInstanceIds : null;
        this.AutoInclude = 'AutoInclude' in params ? params.AutoInclude : null;
        this.InstanceIds = 'InstanceIds' in params ? params.InstanceIds : null;

    }
}

/**
 * ModifyLoginWhiteRecord response structure.
 * @class
 */
class ModifyLoginWhiteRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalwareWhiteListAffectList request structure.
 * @class
 */
class DescribeMalwareWhiteListAffectListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist rule ID
         * @type {number || null}
         */
        this.WhiteListId = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Quantity of returns. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>HostIp - String - required: no - host IP query</li>
<li>FileName - String - required: no - file name query</li>
<li>FileDirectory - String - required: no - file directory query </li>
<li>FileExtension - String - required: no - file extension query</li>
<li>Mode - String - required: no - rule type: 0 MD5; 1 customize</li>
<li>Md5 - String - required: no - MD5 query</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting column: [CreateTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WhiteListId = 'WhiteListId' in params ? params.WhiteListId : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DeleteWebHookPolicy request structure.
 * @class
 */
class DeleteWebHookPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID list
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * ModifyRansomDefenseStrategyStatus request structure.
 * @class
 */
class ModifyRansomDefenseStrategyStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Apply to all policies: 0 No, 1 Yes.
         * @type {number || null}
         */
        this.IsAll = null;

        /**
         * 0 for Off, 1 for On, 9 for Delete
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Policy ID List
         * @type {Array.<number> || null}
         */
        this.IdList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsAll = 'IsAll' in params ? params.IsAll : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IdList = 'IdList' in params ? params.IdList : null;

    }
}

/**
 * DescribeAssetAppList response structure.
 * @class
 */
class DescribeAssetAppListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetAppBaseInfo> || null}
         */
        this.Apps = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Apps) {
            this.Apps = new Array();
            for (let z in params.Apps) {
                let obj = new AssetAppBaseInfo();
                obj.deserialize(params.Apps[z]);
                this.Apps.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Network attack logs on the large screen
 * @class
 */
class ScreenDefendAttackLog extends  AbstractModel {
    constructor(){
        super();

        /**
         * Log ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Source IP
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Source port
         * @type {number || null}
         */
        this.SrcPort = null;

        /**
         * Attack method
         * @type {string || null}
         */
        this.HttpMethod = null;

        /**
         * Threat type
         * @type {string || null}
         */
        this.VulType = null;

        /**
         * Attack time
         * @type {string || null}
         */
        this.CreatedTime = null;

        /**
         * Target port
         * @type {number || null}
         */
        this.DstPort = null;

        /**
         * Host quuid
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Target IP
         * @type {string || null}
         */
        this.DstIp = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.SrcPort = 'SrcPort' in params ? params.SrcPort : null;
        this.HttpMethod = 'HttpMethod' in params ? params.HttpMethod : null;
        this.VulType = 'VulType' in params ? params.VulType : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
        this.DstPort = 'DstPort' in params ? params.DstPort : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.DstIp = 'DstIp' in params ? params.DstIp : null;

    }
}

/**
 * DescribeVulDefencePluginStatus response structure.
 * @class
 */
class DescribeVulDefencePluginStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of data
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of host vulnerability defense plugin information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulDefencePluginStatus> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulDefencePluginStatus();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Host and host tag information
 * @class
 */
class HostTagInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host tag name array
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.TagList = null;

        /**
         * Host intranet IP
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AliasName = null;

        /**
         * Host public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Kernel version number
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.KernelVersion = null;

        /**
         * Host online status: ONLINE; OFFLINE
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Protection version: BASIC_VERSION - Basic Edition PRO_VERSION - Professional Edition; Flagship: Ultimate Edition
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ProtectType = null;

        /**
         * Number of vulnerabilities
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulNum = null;

        /**
         * Cloud Tag Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tags> || null}
         */
        this.CloudTags = null;

        /**
         * Host Instance ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceID = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.TagList = 'TagList' in params ? params.TagList : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.AliasName = 'AliasName' in params ? params.AliasName : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.KernelVersion = 'KernelVersion' in params ? params.KernelVersion : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.ProtectType = 'ProtectType' in params ? params.ProtectType : null;
        this.VulNum = 'VulNum' in params ? params.VulNum : null;

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tags();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }
        this.InstanceID = 'InstanceID' in params ? params.InstanceID : null;

    }
}

/**
 * DescribeRansomDefenseEventsList response structure.
 * @class
 */
class DescribeRansomDefenseEventsListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RansomDefenseEvent> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RansomDefenseEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulEffectModules request structure.
 * @class
 */
class DescribeVulEffectModulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of entries on each page. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Paging offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Filter criteria:
<li>Uuid - String array - Uuid string array</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.VulId = 'VulId' in params ? params.VulId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ModifyRiskDnsPolicyStatus request structure.
 * @class
 */
class ModifyRiskDnsPolicyStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {number || null}
         */
        this.PolicyId = null;

        /**
         * Whether effective [0: effective,1: not effective]
         * @type {number || null}
         */
        this.IsEnabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PolicyId = 'PolicyId' in params ? params.PolicyId : null;
        this.IsEnabled = 'IsEnabled' in params ? params.IsEnabled : null;

    }
}

/**
 * DescribeScreenProtectionCnt response structure.
 * @class
 */
class DescribeScreenProtectionCntResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Introduction of CWPP protection engine 
         * @type {Array.<ScreenProtectionCnt> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ScreenProtectionCnt();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyRansomDefenseEventsStatus response structure.
 * @class
 */
class ModifyRansomDefenseEventsStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineDefaultStrategyList request structure.
 * @class
 */
class DescribeBaselineDefaultStrategyListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * CreateScanMalwareSetting request structure.
 * @class
 */
class CreateScanMalwareSettingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Scan mode: 0 - full disk scan; 1 - rapid scan
         * @type {number || null}
         */
        this.ScanPattern = null;

        /**
         * Server classification: 1: Professional Edition servers; 2: self-selected servers
         * @type {number || null}
         */
        this.HostType = null;

        /**
         * Effective for selected servers; a string array of host QUUIDs
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Timeout unit: seconds, which is 3,600 seconds by default.
         * @type {number || null}
         */
        this.TimeoutPeriod = null;

        /**
         * 1 - standard mode (only critical and high-risk are reported.); 2 - enhanced mode (critical, high-risk, and medium-risk are reported.); 3 - strict mode (critical, high-risk, medium-risk, low-risk, and prompt are reported.)
         * @type {number || null}
         */
        this.EngineType = null;

        /**
         * Whether to enable malicious process killing [0: Not Enabled; 1: Enabled]
         * @type {number || null}
         */
        this.EnableMemShellScan = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScanPattern = 'ScanPattern' in params ? params.ScanPattern : null;
        this.HostType = 'HostType' in params ? params.HostType : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.TimeoutPeriod = 'TimeoutPeriod' in params ? params.TimeoutPeriod : null;
        this.EngineType = 'EngineType' in params ? params.EngineType : null;
        this.EnableMemShellScan = 'EnableMemShellScan' in params ? params.EnableMemShellScan : null;

    }
}

/**
 * Resource load overview
 * @class
 */
class AssetLoadSummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * Load amount array, in ascending order:
[
0% or unknown quantity
0%~20%
20%~50%
50%~80%
80%~100%
]
         * @type {Array.<number> || null}
         */
        this.Counts = null;

        /**
         * Top 5 Load
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetLoadDetail> || null}
         */
        this.Top5 = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Counts = 'Counts' in params ? params.Counts : null;

        if (params.Top5) {
            this.Top5 = new Array();
            for (let z in params.Top5) {
                let obj = new AssetLoadDetail();
                obj.deserialize(params.Top5[z]);
                this.Top5.push(obj);
            }
        }

    }
}

/**
 * DescribeMalwareTimingScanSetting response structure.
 * @class
 */
class DescribeMalwareTimingScanSettingResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection mode: 0 - full disk detection; 1 - rapid detection
         * @type {number || null}
         */
        this.CheckPattern = null;

        /**
         * Detection cycle; start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Detection cycle; timeout end time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Whether all servers: 1 - all; 2 - specified
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * When you select servers, host quuid is required.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Monitoring mode: 0 - standard; 1 - deep
         * @type {number || null}
         */
        this.MonitoringPattern = null;

        /**
         * Cycle: 1 - daily
         * @type {number || null}
         */
        this.Cycle = null;

        /**
         * Scheduled detection switch: 0 - disable; 1 - enable
         * @type {number || null}
         */
        this.EnableScan = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Real-time monitoring: 0 - disable 1 - enable
         * @type {number || null}
         */
        this.RealTimeMonitoring = null;

        /**
         * Whether to isolate automatically: 1 - yes; 0 - no
         * @type {number || null}
         */
        this.AutoIsolation = null;

        /**
         * One-click scan timeout duration, such as 1800 seconds
         * @type {number || null}
         */
        this.ClickTimeout = null;

        /**
         * Whether to terminate the process: 1: terminate; 0: not terminate. It is effective only if automatic isolation is enabled.
         * @type {number || null}
         */
        this.KillProcess = null;

        /**
         * 1 - standard mode (only critical and high-risk are reported.); 2 - enhanced mode (critical, high-risk, and medium-risk are reported.); 3 - strict mode (critical, high-risk, medium-risk, low-risk, and prompt are reported.)
         * @type {number || null}
         */
        this.EngineType = null;

        /**
         * Heuristic Engine: 0 - OFF, 1 - ON
         * @type {number || null}
         */
        this.EnableInspiredEngine = null;

        /**
         * Whether to enable malicious process killing [0: Not Enabled; 1: Enabled]
         * @type {number || null}
         */
        this.EnableMemShellScan = null;

        /**
         * Protection mode: 0 - standard; 1 - enhanced
         * @type {number || null}
         */
        this.ProtectMode = null;

        /**
         * Scope of detection: 0 - malicious files other than scripts; 1 - all malicious files
         * @type {number || null}
         */
        this.ProtectFileScope = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CheckPattern = 'CheckPattern' in params ? params.CheckPattern : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.MonitoringPattern = 'MonitoringPattern' in params ? params.MonitoringPattern : null;
        this.Cycle = 'Cycle' in params ? params.Cycle : null;
        this.EnableScan = 'EnableScan' in params ? params.EnableScan : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.RealTimeMonitoring = 'RealTimeMonitoring' in params ? params.RealTimeMonitoring : null;
        this.AutoIsolation = 'AutoIsolation' in params ? params.AutoIsolation : null;
        this.ClickTimeout = 'ClickTimeout' in params ? params.ClickTimeout : null;
        this.KillProcess = 'KillProcess' in params ? params.KillProcess : null;
        this.EngineType = 'EngineType' in params ? params.EngineType : null;
        this.EnableInspiredEngine = 'EnableInspiredEngine' in params ? params.EnableInspiredEngine : null;
        this.EnableMemShellScan = 'EnableMemShellScan' in params ? params.EnableMemShellScan : null;
        this.ProtectMode = 'ProtectMode' in params ? params.ProtectMode : null;
        this.ProtectFileScope = 'ProtectFileScope' in params ? params.ProtectFileScope : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeHostLoginList request structure.
 * @class
 */
class DescribeHostLoginListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of items to be returned. The maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which defaults to 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Quuid - String - required: no - CVM UUID</li>
<li>Uuid - String - required: no - CWPP unique UUID</li>
<li>MachineName - String - required: no - host alias</li>
<li>Ip - String - required: no - host IP</li>
<li>InstanceID - String - required: no - host instance ID</li>
<li>SrcIp - String - required: no - filter by source IP</li>
<li>UserName - String - required: no - filter by username</li>
<li>Status - int - required: no - status filtering: 1: normal log-in; 5: whitelisted; 14: processed; 15: ignored</li>
<li>LoginTimeBegin - String - required: no - filter by modification time; start time</li>
<li>LoginTimeEnd - String - required: no - filter by modification time; end time</li>
<li>RiskLevel - int - required: no - status filtering: 0: high-risk; 1: suspicious</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: sort by number of requests: asc - ascending order/desc - descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: LoginTime - occurrence time
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyRansomDefenseStrategyStatus response structure.
 * @class
 */
class ModifyRansomDefenseStrategyStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRansomDefenseStrategyList request structure.
 * @class
 */
class ExportRansomDefenseStrategyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>Ips - String - required: no - query by IP</li>
<li>MachineNames - String - required: no - query by instance name</li>
<li>Names - String - required: no - query by instance name</li>
<li>Dirs - String - Required: No - Bait Directory </li>
<li>Status - String - Required: No - Policy Status: 0 Disabled, 1 Enabled </li>
<li>BackupType - String - Required: No - Backup Mode: 0-Weekly; 1-Daily </li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: ASC / DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting fields, supporting CreateTime and MachineCount
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Host list
 * @class
 */
class Machine extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name.
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host System.
         * @type {string || null}
         */
        this.MachineOs = null;

        /**
         * Host status
<li>OFFLINE: Offline</li>
<li>ONLINE: Online</li>
<li>SHUTDOWN: Shut down</li>
<li>UNINSTALLED: Unprotected</li>
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Yunjing client UUID. If the client is offline for a long time, an empty string is returned.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * CVM or BM Machine Unique UUID.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Number of vulnerabilities
         * @type {number || null}
         */
        this.VulNum = null;

        /**
         * Host IP.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Whether the edition is Pro Edition
<li>true: yes</li>
<li>false: no</li>
         * @type {boolean || null}
         */
        this.IsProVersion = null;

        /**
         * Public IP address of a host
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host status
<li>POSTPAY: postpaid, indicating pay-as-you-go mode  </li>
<li>PREPAY: prepaid, indicating monthly subscription mode</li>
         * @type {string || null}
         */
        this.PayMode = null;

        /**
         * Number of Trojans
         * @type {number || null}
         */
        this.MalwareNum = null;

        /**
         * Tag information
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Number of baseline risks
         * @type {number || null}
         */
        this.BaselineNum = null;

        /**
         * Number of network risks
         * @type {number || null}
         */
        this.CyberAttackNum = null;

        /**
         * Risk status
<li>SAFE: Safe</li>
<li>RISK: Risk</li>
<li>UNKNOWN: Unknown</li>
         * @type {string || null}
         */
        this.SecurityStatus = null;

        /**
         * Number of intrusion events
         * @type {number || null}
         */
        this.InvasionNum = null;

        /**
         * Region information
         * @type {RegionInfo || null}
         */
        this.RegionInfo = null;

        /**
         * Instance status: TERMINATED_PRO_VERSION - terminated
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Tamper-proof; authorization status: 1 - authorized; 0 - unauthorized
         * @type {number || null}
         */
        this.LicenseStatus = null;

        /**
         * Project ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Whether there is an available asset scanning API: 0 - no; 1 - yes
         * @type {number || null}
         */
        this.HasAssetScan = null;

        /**
         * Machine Zone Type. CVM - Cloud Virtual Machine; BM: Bare Metal; ECM: Edge Computing Machine; LH: Lightweight Application Server; Other: Hybrid Cloud Zone
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Kernel version
         * @type {string || null}
         */
        this.KernelVersion = null;

        /**
         * Protection version: BASIC_VERSION - Basic Edition; PRO_VERSION - Professional Edition; Flagship - Ultimate Edition; GENERAL_DISCOUNT - Inclusive Edition
         * @type {string || null}
         */
        this.ProtectType = null;

        /**
         * Cloud Tag Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tags> || null}
         */
        this.CloudTags = null;

        /**
         * Whether a host added within the last 15 days: 0: no; 1: yes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsAddedOnTheFifteen = null;

        /**
         * Host IP List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.IpList = null;

        /**
         * Network
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VpcId = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Remarks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Remark = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineOs = 'MachineOs' in params ? params.MachineOs : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.VulNum = 'VulNum' in params ? params.VulNum : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.IsProVersion = 'IsProVersion' in params ? params.IsProVersion : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.PayMode = 'PayMode' in params ? params.PayMode : null;
        this.MalwareNum = 'MalwareNum' in params ? params.MalwareNum : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.BaselineNum = 'BaselineNum' in params ? params.BaselineNum : null;
        this.CyberAttackNum = 'CyberAttackNum' in params ? params.CyberAttackNum : null;
        this.SecurityStatus = 'SecurityStatus' in params ? params.SecurityStatus : null;
        this.InvasionNum = 'InvasionNum' in params ? params.InvasionNum : null;

        if (params.RegionInfo) {
            let obj = new RegionInfo();
            obj.deserialize(params.RegionInfo)
            this.RegionInfo = obj;
        }
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.LicenseStatus = 'LicenseStatus' in params ? params.LicenseStatus : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.HasAssetScan = 'HasAssetScan' in params ? params.HasAssetScan : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.KernelVersion = 'KernelVersion' in params ? params.KernelVersion : null;
        this.ProtectType = 'ProtectType' in params ? params.ProtectType : null;

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tags();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }
        this.IsAddedOnTheFifteen = 'IsAddedOnTheFifteen' in params ? params.IsAddedOnTheFifteen : null;
        this.IpList = 'IpList' in params ? params.IpList : null;
        this.VpcId = 'VpcId' in params ? params.VpcId : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.Remark = 'Remark' in params ? params.Remark : null;

    }
}

/**
 * Core file monitoring rules
 * @class
 */
class FileTamperRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Process path
         * @type {string || null}
         */
        this.ProcessPath = null;

        /**
         * Accessed file path
         * @type {string || null}
         */
        this.Target = null;

        /**
         * Recommended action: skip: skip; alarm: alert
         * @type {string || null}
         */
        this.Action = null;

        /**
         * Monitoring behavior
<li>read: read file</li>
<li>write: modify file</li>
<li>read-write: read and modify file</li>
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileAction = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProcessPath = 'ProcessPath' in params ? params.ProcessPath : null;
        this.Target = 'Target' in params ? params.Target : null;
        this.Action = 'Action' in params ? params.Action : null;
        this.FileAction = 'FileAction' in params ? params.FileAction : null;

    }
}

/**
 * Security trend statistics
 * @class
 */
class SecurityTrend extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event time
         * @type {string || null}
         */
        this.Date = null;

        /**
         * Number of events
         * @type {number || null}
         */
        this.EventNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Date = 'Date' in params ? params.Date : null;
        this.EventNum = 'EventNum' in params ? params.EventNum : null;

    }
}

/**
 * ScanTaskAgain response structure.
 * @class
 */
class ScanTaskAgainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebServiceProcessList request structure.
 * @class
 */
class DescribeAssetWebServiceProcessListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Web service ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DescribeScreenMachines response structure.
 * @class
 */
class DescribeScreenMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenRegionMachines> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ScreenRegionMachines();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Authorization order list object
 * @class
 */
class LicenseDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization ID
         * @type {number || null}
         */
        this.LicenseId = null;

        /**
         * Authorization type. 0: Pro Edition - pay-as-you-go; 1: Pro Edition - monthly subscription; 2: Ultimate Edition - monthly subscription.
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Authorization status. 0: not in use; 1: partially in use; 2: used up; 3: unavailable.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.LicenseStatus = null;

        /**
         * Total number of authorizations
         * @type {number || null}
         */
        this.LicenseCnt = null;

        /**
         * Number of used authorizations
         * @type {number || null}
         */
        this.UsedLicenseCnt = null;

        /**
         * Order status. 1: normal; 2: isolated; 3: terminated.
         * @type {number || null}
         */
        this.OrderStatus = null;

        /**
         * Deadline
         * @type {string || null}
         */
        this.Deadline = null;

        /**
         * Order resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * 0: initialization; 1: automatic renewal; 2: no automatic renewal.
         * @type {number || null}
         */
        this.AutoRenewFlag = null;

        /**
         * Project ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Task ID. Default value: 0. It is used to query the binding progress.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Time of purchase
         * @type {string || null}
         */
        this.BuyTime = null;

        /**
         * Whether the order is a trial order
         * @type {number || null}
         */
        this.SourceType = null;

        /**
         * Resource alias
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Platform Tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tags> || null}
         */
        this.Tags = null;

        /**
         * Number of frozen authorizations. 0: no authorization is frozen; other values: actual number of frozen authorizations.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FreezeNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseId = 'LicenseId' in params ? params.LicenseId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.LicenseStatus = 'LicenseStatus' in params ? params.LicenseStatus : null;
        this.LicenseCnt = 'LicenseCnt' in params ? params.LicenseCnt : null;
        this.UsedLicenseCnt = 'UsedLicenseCnt' in params ? params.UsedLicenseCnt : null;
        this.OrderStatus = 'OrderStatus' in params ? params.OrderStatus : null;
        this.Deadline = 'Deadline' in params ? params.Deadline : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.AutoRenewFlag = 'AutoRenewFlag' in params ? params.AutoRenewFlag : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.BuyTime = 'BuyTime' in params ? params.BuyTime : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;
        this.Alias = 'Alias' in params ? params.Alias : null;

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new Tags();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }
        this.FreezeNum = 'FreezeNum' in params ? params.FreezeNum : null;

    }
}

/**
 * Local privilege escalation rule
 * @class
 */
class PrivilegeRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Whether the mode is S mode
         * @type {number || null}
         */
        this.SMode = null;

        /**
         * Operator
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * Whether the rule is global
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Status. 0: valid; 1: invalid.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.Hostip = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.SMode = 'SMode' in params ? params.SMode : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Hostip = 'Hostip' in params ? params.Hostip : null;

    }
}

/**
 * ScanVulSetting request structure.
 * @class
 */
class ScanVulSettingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Regular detection interval (days)
         * @type {number || null}
         */
        this.TimerInterval = null;

        /**
         * Vulnerability type. 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability. Pass in the values in array format. Example: [1,2]
         * @type {Array.<number> || null}
         */
        this.VulCategories = null;

        /**
         * Severity level. 1: low-risk; 2: medium-risk; 3: high-risk; 4: critical. Pass in the values in array format. Example: [1,2,3]
         * @type {Array.<number> || null}
         */
        this.VulLevels = null;

        /**
         * Periodic detection time. Example: 02:10:50
         * @type {string || null}
         */
        this.TimerTime = null;

        /**
         * Whether the vulnerability is an emergency vulnerability. 0: no; 1: yes.
         * @type {number || null}
         */
        this.VulEmergency = null;

        /**
         * Scan start time. Example: 00:00
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Scan end time. Example: 08:00
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Whether to enable scanning. 1: enable; 0: disable.
         * @type {number || null}
         */
        this.EnableScan = null;

        /**
         * If empty, scan hosts with all Professional, Premium, and General Discount editions by default; if not empty, only scan the selected hosts.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * 
         * @type {number || null}
         */
        this.ScanMethod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TimerInterval = 'TimerInterval' in params ? params.TimerInterval : null;
        this.VulCategories = 'VulCategories' in params ? params.VulCategories : null;
        this.VulLevels = 'VulLevels' in params ? params.VulLevels : null;
        this.TimerTime = 'TimerTime' in params ? params.TimerTime : null;
        this.VulEmergency = 'VulEmergency' in params ? params.VulEmergency : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.EnableScan = 'EnableScan' in params ? params.EnableScan : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.ScanMethod = 'ScanMethod' in params ? params.ScanMethod : null;

    }
}

/**
 * ExportVulDetectionExcel request structure.
 * @class
 */
class ExportVulDetectionExcelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the vulnerability detection task (different from the ID of the task for exporting the vulnerability detection Excel file in the response parameters)
         * @type {number || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * CreateEmergencyVulScan request structure.
 * @class
 */
class CreateEmergencyVulScanRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Array of host UUID strings. This parameter is valid for specified servers.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Scan timeout duration, in seconds.
         * @type {number || null}
         */
        this.TimeoutPeriod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.TimeoutPeriod = 'TimeoutPeriod' in params ? params.TimeoutPeriod : null;

    }
}

/**
 * ModifyWebHookRuleStatus response structure.
 * @class
 */
class ModifyWebHookRuleStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulEffectHostList response structure.
 * @class
 */
class ExportVulEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been deprecated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Export task ID, which can be downloaded by using the API ExportTasks.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebServiceCount response structure.
 * @class
 */
class DescribeAssetWebServiceCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of web services
         * @type {Array.<AssetKeyVal> || null}
         */
        this.WebServices = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WebServices) {
            this.WebServices = new Array();
            for (let z in params.WebServices) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.WebServices[z]);
                this.WebServices.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of the asset management kernel module
 * @class
 */
class AssetCoreModuleDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Size
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Dependent processes
         * @type {string || null}
         */
        this.Processes = null;

        /**
         * Dependent modules
         * @type {string || null}
         */
        this.Modules = null;

        /**
         * Parameter information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetCoreModuleParam> || null}
         */
        this.Params = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.Processes = 'Processes' in params ? params.Processes : null;
        this.Modules = 'Modules' in params ? params.Modules : null;

        if (params.Params) {
            this.Params = new Array();
            for (let z in params.Params) {
                let obj = new AssetCoreModuleParam();
                obj.deserialize(params.Params[z]);
                this.Params.push(obj);
            }
        }
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * ExportScanTaskDetails response structure.
 * @class
 */
class ExportScanTaskDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, which is used to obtain the download URL (DownloadUrl) by using the asynchronous task export API ExportTasks. (This ID differs from the detection task ID in the input parameters.)
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulTop request structure.
 * @class
 */
class DescribeVulTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top servers by vulnerability risks. The specific number is in the range of 1 to 100.
         * @type {number || null}
         */
        this.Top = null;

        /**
         * 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability; 6: emergency vulnerability. If this parameter is left blank or set to 0, the statistical data of all these types of vulnerabilities is returned.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Whether to count only focused vulnerabilities. 1: count only focused vulnerabilities; 0: count all vulnerabilities.
         * @type {number || null}
         */
        this.IsFollowVul = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Top = 'Top' in params ? params.Top : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.IsFollowVul = 'IsFollowVul' in params ? params.IsFollowVul : null;

    }
}

/**
 * DescribeScreenProtectionStat request structure.
 * @class
 */
class DescribeScreenProtectionStatRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyLogKafkaDeliverType request structure.
 * @class
 */
class ModifyLogKafkaDeliverTypeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Security module type. 1: intrusion detection; 2: vulnerability management; 3: baseline management; 4: advanced defense; 5: client security; 6: asset fingerprint.
         * @type {number || null}
         */
        this.SecurityType = null;

        /**
         * Log type of the security module
         * @type {Array.<number> || null}
         */
        this.LogType = null;

        /**
         * Shipping enabling status. 0: disabled; 1: enabled.
         * @type {number || null}
         */
        this.Switch = null;

        /**
         * kafka topic id
         * @type {string || null}
         */
        this.TopicId = null;

        /**
         * kafka topic name
         * @type {string || null}
         */
        this.TopicName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecurityType = 'SecurityType' in params ? params.SecurityType : null;
        this.LogType = 'LogType' in params ? params.LogType : null;
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.TopicId = 'TopicId' in params ? params.TopicId : null;
        this.TopicName = 'TopicName' in params ? params.TopicName : null;

    }
}

/**
 * Information on the ignored baseline check item
 * @class
 */
class IgnoreBaselineRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline check item name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Baseline check item ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Fixing suggestions
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Fix = null;

        /**
         * Number of affected hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EffectHostCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Fix = 'Fix' in params ? params.Fix : null;
        this.EffectHostCount = 'EffectHostCount' in params ? params.EffectHostCount : null;

    }
}

/**
 * DescribeBaselineItemDetectList request structure.
 * @class
 */
class DescribeBaselineItemDetectListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>HostId - string - required: no - host ID</li>
<li>RuleId - int64 - required: no - rule ID</li>
<li>PolicyId - int64 - required: no - policy ID</li>
<li>ItemName - string - required: no - item name</li>
<li>DetectStatus - int - required: no - detection status</li>
<li>Level - int - required: no - risk level</li>
<li>StartTime - string - required: no - start time</li>
<li>EndTime - string - required: no - end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column: [HostCount|FirstTime|LastTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ExportBaselineItemDetectList response structure.
 * @class
 */
class ExportBaselineItemDetectListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBanStatus request structure.
 * @class
 */
class DescribeBanStatusRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAssetRecentMachineInfo response structure.
 * @class
 */
class DescribeAssetRecentMachineInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of total assets
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.TotalList = null;

        /**
         * List of online assets
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.LiveList = null;

        /**
         * List of offline assets
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.OfflineList = null;

        /**
         * List of risky assets
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetKeyVal> || null}
         */
        this.RiskList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TotalList) {
            this.TotalList = new Array();
            for (let z in params.TotalList) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.TotalList[z]);
                this.TotalList.push(obj);
            }
        }

        if (params.LiveList) {
            this.LiveList = new Array();
            for (let z in params.LiveList) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.LiveList[z]);
                this.LiveList.push(obj);
            }
        }

        if (params.OfflineList) {
            this.OfflineList = new Array();
            for (let z in params.OfflineList) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.OfflineList[z]);
                this.OfflineList.push(obj);
            }
        }

        if (params.RiskList) {
            this.RiskList = new Array();
            for (let z in params.RiskList) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.RiskList[z]);
                this.RiskList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline Item
 * @class
 */
class BaselineItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Item ID
         * @type {number || null}
         */
        this.ItemId = null;

        /**
         * Item Name
         * @type {string || null}
         */
        this.ItemName = null;

        /**
         * Detection Item Classification
         * @type {number || null}
         */
        this.CategoryId = null;

        /**
         * Item Description
         * @type {string || null}
         */
        this.ItemDesc = null;

        /**
         * Fixing Method
         * @type {string || null}
         */
        this.FixMethod = null;

        /**
         * Rule
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Check result description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DetectResultDesc = null;

        /**
         * Risk level
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Detection Status. 0: Failed; 1: Ignored; 3: Passed; 5: Under detection
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DetectStatus = null;

        /**
         * Host ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostId = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WanIp = null;

        /**
         * First Occurrence Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Last Occurrence Time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Can Be Fixed or Not
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CanBeFixed = null;

        /**
         * Host Security UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ItemId = 'ItemId' in params ? params.ItemId : null;
        this.ItemName = 'ItemName' in params ? params.ItemName : null;
        this.CategoryId = 'CategoryId' in params ? params.CategoryId : null;
        this.ItemDesc = 'ItemDesc' in params ? params.ItemDesc : null;
        this.FixMethod = 'FixMethod' in params ? params.FixMethod : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.DetectResultDesc = 'DetectResultDesc' in params ? params.DetectResultDesc : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.DetectStatus = 'DetectStatus' in params ? params.DetectStatus : null;
        this.HostId = 'HostId' in params ? params.HostId : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.WanIp = 'WanIp' in params ? params.WanIp : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.CanBeFixed = 'CanBeFixed' in params ? params.CanBeFixed : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeMalWareList response structure.
 * @class
 */
class DescribeMalWareListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of Trojans
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MalWareList> || null}
         */
        this.MalWareList = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MalWareList) {
            this.MalWareList = new Array();
            for (let z in params.MalWareList) {
                let obj = new MalWareList();
                obj.deserialize(params.MalWareList[z]);
                this.MalWareList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWebHookRules request structure.
 * @class
 */
class DescribeWebHookRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
         * @type {Array.<Filter> || null}
         */
        this.Filter = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filter) {
            this.Filter = new Array();
            for (let z in params.Filter) {
                let obj = new Filter();
                obj.deserialize(params.Filter[z]);
                this.Filter.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyMalwareWhiteList response structure.
 * @class
 */
class ModifyMalwareWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetPortInfoList response structure.
 * @class
 */
class DescribeAssetPortInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetPortBaseInfo> || null}
         */
        this.Ports = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Ports) {
            this.Ports = new Array();
            for (let z in params.Ports) {
                let obj = new AssetPortBaseInfo();
                obj.deserialize(params.Ports[z]);
                this.Ports.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalwareRiskOverview request structure.
 * @class
 */
class DescribeMalwareRiskOverviewRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMaliciousRequestWhiteList response structure.
 * @class
 */
class DescribeMaliciousRequestWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of allowlist information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MaliciousRequestWhiteListInfo> || null}
         */
        this.List = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MaliciousRequestWhiteListInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselinePolicyList request structure.
 * @class
 */
class DescribeBaselinePolicyListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>PolicyName - String - required: no - policy name</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column: [RuleCount|ItemCount|HostCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Vulnerability details
 * @class
 */
class VulDefenceEventDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.VulName = null;

        /**
         * CVE ID
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * Vulnerability Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Public IP address
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * 0: Attack Attempt (WeDetect); 1: Successful Attack Attempt (WeDetect); 2: RASP Defense Event
         * @type {number || null}
         */
        this.EventType = null;

        /**
         * Attack source IP address
         * @type {string || null}
         */
        this.SourceIp = null;

        /**
         * City of the attack source IP address
         * @type {string || null}
         */
        this.City = null;

        /**
         * Attack source port
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.SourcePort = null;

        /**
         * Event Creation Time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update Event Time
         * @type {string || null}
         */
        this.MergeTime = null;

        /**
         * Number of Occurrences
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Status. 0: Pending; 1: Defended; 2: Processed; 3: Ignored; 4: Deleted
         * @type {number || null}
         */
        this.Status = null;

        /**
         * ONLINE OFFLINE
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Vulnerability Description Information
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Fixing suggestion
         * @type {string || null}
         */
        this.Fix = null;

        /**
         * Attack Payload
         * @type {string || null}
         */
        this.NetworkPayload = null;

        /**
         * Associated Process PID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Associated Process Main Class Name
         * @type {string || null}
         */
        this.MainClass = null;

        /**
         * Stack Information (Unique for RASP)
         * @type {string || null}
         */
        this.StackTrace = null;

        /**
         * Vulnerability ID-Related Event Details (JSON array format, unique to RASP)
         * @type {string || null}
         */
        this.EventDetail = null;

        /**
         * Host Compromise Event Process Tree (JSON format, unique to WeDetect)
         * @type {string || null}
         */
        this.ExceptionPstree = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulName = 'VulName' in params ? params.VulName : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.SourceIp = 'SourceIp' in params ? params.SourceIp : null;
        this.City = 'City' in params ? params.City : null;
        this.SourcePort = 'SourcePort' in params ? params.SourcePort : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MergeTime = 'MergeTime' in params ? params.MergeTime : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Fix = 'Fix' in params ? params.Fix : null;
        this.NetworkPayload = 'NetworkPayload' in params ? params.NetworkPayload : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.MainClass = 'MainClass' in params ? params.MainClass : null;
        this.StackTrace = 'StackTrace' in params ? params.StackTrace : null;
        this.EventDetail = 'EventDetail' in params ? params.EventDetail : null;
        this.ExceptionPstree = 'ExceptionPstree' in params ? params.ExceptionPstree : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DeleteBruteAttacks response structure.
 * @class
 */
class DeleteBruteAttacksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportTasks response structure.
 * @class
 */
class ExportTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * PENDING: download URL being generated; FINISHED: download URL generated; ERROR: network error or other errors.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Download URL
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetWebAppList response structure.
 * @class
 */
class ExportAssetWebAppListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeIgnoreBaselineRule response structure.
 * @class
 */
class DescribeIgnoreBaselineRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of ignored baseline check items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<IgnoreBaselineRule> || null}
         */
        this.IgnoreBaselineRuleList = null;

        /**
         * Total number of pagination query records
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.IgnoreBaselineRuleList) {
            this.IgnoreBaselineRuleList = new Array();
            for (let z in params.IgnoreBaselineRuleList) {
                let obj = new IgnoreBaselineRule();
                obj.deserialize(params.IgnoreBaselineRuleList[z]);
                this.IgnoreBaselineRuleList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulEmergentMsg request structure.
 * @class
 */
class DescribeVulEmergentMsgRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMachineOsList request structure.
 * @class
 */
class DescribeMachineOsListRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeMalwareRiskWarning response structure.
 * @class
 */
class DescribeMalwareRiskWarningResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether automatic scanning is enabled. True: enabled; false: disabled.
         * @type {boolean || null}
         */
        this.IsCheckRisk = null;

        /**
         * List of risky files
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MalwareRisk> || null}
         */
        this.List = null;

        /**
         * Whether to show the prompt. True: show prompt; false: do not show prompt.
         * @type {boolean || null}
         */
        this.IsPop = null;

        /**
         * Information on Abnormal Process List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MalwareRisk> || null}
         */
        this.ProcessList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsCheckRisk = 'IsCheckRisk' in params ? params.IsCheckRisk : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MalwareRisk();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.IsPop = 'IsPop' in params ? params.IsPop : null;

        if (params.ProcessList) {
            this.ProcessList = new Array();
            for (let z in params.ProcessList) {
                let obj = new MalwareRisk();
                obj.deserialize(params.ProcessList[z]);
                this.ProcessList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashRules request structure.
 * @class
 */
class DescribeBashRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * 0: system rule; 1: user rule.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Number of returned entries. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - keyword (rule name)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportLicenseDetail response structure.
 * @class
 */
class ExportLicenseDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download URL. This field has been deprecated.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic baseline information
 * @class
 */
class BaselineBasicInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Baseline ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BaselineId = null;

        /**
         * Parent ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ParentId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.BaselineId = 'BaselineId' in params ? params.BaselineId : null;
        this.ParentId = 'ParentId' in params ? params.ParentId : null;

    }
}

/**
 * DescribeBanMode response structure.
 * @class
 */
class DescribeBanModeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking mode. STANDARD_MODE: standard mode; DEEP_MODE: deep mode.
         * @type {string || null}
         */
        this.Mode = null;

        /**
         * Configuration of the standard blocking mode
         * @type {StandardModeConfig || null}
         */
        this.StandardModeConfig = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;

        if (params.StandardModeConfig) {
            let obj = new StandardModeConfig();
            obj.deserialize(params.StandardModeConfig)
            this.StandardModeConfig = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenAttackHotspot response structure.
 * @class
 */
class DescribeScreenAttackHotspotResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attack hotspot list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenAttackHotspot> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ScreenAttackHotspot();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information on Number of Host-associated Core File Rules
 * @class
 */
class FileTamperRuleCount extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Number of Association Rules
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Name of the Association Rule (Show Only One of Them)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeRiskDnsEventInfo response structure.
 * @class
 */
class DescribeRiskDnsEventInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request event details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RiskDnsEvent || null}
         */
        this.Info = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Info) {
            let obj = new RiskDnsEvent();
            obj.deserialize(params.Info)
            this.Info = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSecurityEventStat response structure.
 * @class
 */
class DescribeSecurityEventStatResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan event statistics
         * @type {EventStat || null}
         */
        this.MalwareStat = null;

        /**
         * Statistics of cross-region log-in events
         * @type {EventStat || null}
         */
        this.HostLoginStat = null;

        /**
         * Statistics of brute force cracking events
         * @type {EventStat || null}
         */
        this.BruteAttackStat = null;

        /**
         * Malicious request event statistics
         * @type {EventStat || null}
         */
        this.MaliciousRequestStat = null;

        /**
         * Statistics of local privilege escalation events
         * @type {EventStat || null}
         */
        this.PrivilegeStat = null;

        /**
         * Reverse shell event statistics
         * @type {EventStat || null}
         */
        this.ReverseShellStat = null;

        /**
         * Statistics of high-risk command events
         * @type {EventStat || null}
         */
        this.HighRiskBashStat = null;

        /**
         * Network attack event statistics
         * @type {EventStat || null}
         */
        this.AttackLogsStat = null;

        /**
         * Statistics of high-risk vulnerability events
         * @type {EventStat || null}
         */
        this.VulHighStat = null;

        /**
         * Statistics of medium-risk vulnerability events
         * @type {EventStat || null}
         */
        this.VulNormalStat = null;

        /**
         * Statistics of low-risk vulnerability events
         * @type {EventStat || null}
         */
        this.VulLowStat = null;

        /**
         * Statistics of high-risk baseline vulnerability events
         * @type {EventStat || null}
         */
        this.BaselineHighStat = null;

        /**
         * Statistics of medium-risk baseline vulnerability events
         * @type {EventStat || null}
         */
        this.BaselineNormalStat = null;

        /**
         * Statistics of low-risk baseline vulnerability events
         * @type {EventStat || null}
         */
        this.BaselineLowStat = null;

        /**
         * Total number of machines with unfixed security events
         * @type {number || null}
         */
        this.MachineTotalAffectNum = null;

        /**
         * Total number of machines with unfixed intrusion security events
         * @type {number || null}
         */
        this.InvasionTotalAffectNum = null;

        /**
         * Total number of machines with unfixed vulnerability security events
         * @type {number || null}
         */
        this.VulTotalAffectNum = null;

        /**
         * Total number of machines with unfixed baseline security events
         * @type {number || null}
         */
        this.BaseLineTotalAffectNum = null;

        /**
         * Total number of machines with unfixed network attack security events
         * @type {number || null}
         */
        this.CyberAttackTotalAffectNum = null;

        /**
         * Critical vulnerability event statistics
         * @type {EventStat || null}
         */
        this.VulRiskStat = null;

        /**
         * Statistics of critical baseline vulnerability events
         * @type {EventStat || null}
         */
        this.BaselineRiskStat = null;

        /**
         * Statistics on the number of vulnerabilities
         * @type {EventStat || null}
         */
        this.VulStat = null;

        /**
         * Security score
         * @type {number || null}
         */
        this.Score = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MalwareStat) {
            let obj = new EventStat();
            obj.deserialize(params.MalwareStat)
            this.MalwareStat = obj;
        }

        if (params.HostLoginStat) {
            let obj = new EventStat();
            obj.deserialize(params.HostLoginStat)
            this.HostLoginStat = obj;
        }

        if (params.BruteAttackStat) {
            let obj = new EventStat();
            obj.deserialize(params.BruteAttackStat)
            this.BruteAttackStat = obj;
        }

        if (params.MaliciousRequestStat) {
            let obj = new EventStat();
            obj.deserialize(params.MaliciousRequestStat)
            this.MaliciousRequestStat = obj;
        }

        if (params.PrivilegeStat) {
            let obj = new EventStat();
            obj.deserialize(params.PrivilegeStat)
            this.PrivilegeStat = obj;
        }

        if (params.ReverseShellStat) {
            let obj = new EventStat();
            obj.deserialize(params.ReverseShellStat)
            this.ReverseShellStat = obj;
        }

        if (params.HighRiskBashStat) {
            let obj = new EventStat();
            obj.deserialize(params.HighRiskBashStat)
            this.HighRiskBashStat = obj;
        }

        if (params.AttackLogsStat) {
            let obj = new EventStat();
            obj.deserialize(params.AttackLogsStat)
            this.AttackLogsStat = obj;
        }

        if (params.VulHighStat) {
            let obj = new EventStat();
            obj.deserialize(params.VulHighStat)
            this.VulHighStat = obj;
        }

        if (params.VulNormalStat) {
            let obj = new EventStat();
            obj.deserialize(params.VulNormalStat)
            this.VulNormalStat = obj;
        }

        if (params.VulLowStat) {
            let obj = new EventStat();
            obj.deserialize(params.VulLowStat)
            this.VulLowStat = obj;
        }

        if (params.BaselineHighStat) {
            let obj = new EventStat();
            obj.deserialize(params.BaselineHighStat)
            this.BaselineHighStat = obj;
        }

        if (params.BaselineNormalStat) {
            let obj = new EventStat();
            obj.deserialize(params.BaselineNormalStat)
            this.BaselineNormalStat = obj;
        }

        if (params.BaselineLowStat) {
            let obj = new EventStat();
            obj.deserialize(params.BaselineLowStat)
            this.BaselineLowStat = obj;
        }
        this.MachineTotalAffectNum = 'MachineTotalAffectNum' in params ? params.MachineTotalAffectNum : null;
        this.InvasionTotalAffectNum = 'InvasionTotalAffectNum' in params ? params.InvasionTotalAffectNum : null;
        this.VulTotalAffectNum = 'VulTotalAffectNum' in params ? params.VulTotalAffectNum : null;
        this.BaseLineTotalAffectNum = 'BaseLineTotalAffectNum' in params ? params.BaseLineTotalAffectNum : null;
        this.CyberAttackTotalAffectNum = 'CyberAttackTotalAffectNum' in params ? params.CyberAttackTotalAffectNum : null;

        if (params.VulRiskStat) {
            let obj = new EventStat();
            obj.deserialize(params.VulRiskStat)
            this.VulRiskStat = obj;
        }

        if (params.BaselineRiskStat) {
            let obj = new EventStat();
            obj.deserialize(params.BaselineRiskStat)
            this.BaselineRiskStat = obj;
        }

        if (params.VulStat) {
            let obj = new EventStat();
            obj.deserialize(params.VulStat)
            this.VulStat = obj;
        }
        this.Score = 'Score' in params ? params.Score : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetDatabaseList request structure.
 * @class
 */
class DescribeAssetDatabaseListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>MachineName - String - required: no - host alias for filtering</li>
<li>IP - String - required: no - host IP address for filtering</li>
<li>InstanceID - String - required: no - host instance ID for filtering</li>
<li>User- string - required: no - running user</li>
<li>Port - Int - required: no - port</li>
<li>Name - Int - required: no - database name
0: all
1:MySQL
2:Redis
3:Oracle
4:MongoDB
5:MemCache
6:PostgreSQL
7:HBase
8:DB2
9:Sybase
10:TiDB</li>
<li>Proto - String - required: no - protocol: 1: TCP; 2: UDP; 3: unknown</li>
<li>OsType - String - required: no - operating system: linux/windows</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * ModifyWebHookRuleStatus request structure.
 * @class
 */
class ModifyWebHookRuleStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Enabling status: [0: ON | 1: Off]
         * @type {number || null}
         */
        this.IsDisabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;

    }
}

/**
 * KeysLocalStorage response structure.
 * @class
 */
class KeysLocalStorageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Keys = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Keys = 'Keys' in params ? params.Keys : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetMachineList request structure.
 * @class
 */
class DescribeAssetMachineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter criteria
<li>MachineName  Host name</li>
<li>InstanceID  Instance ID  </li>
<li>IP   Private or public IP address</li>
<li>OsType - String - required: no - Windows or Linux</li>
<li>CpuLoad - Int - required: no - 
	0: unknown; 1: low load;
	2: medium load; 3: high load</li>
<li>DiskLoad - Int - required: no - 
	0: 0% or unknown; 1: 0%-20%;
	2: 20%~50%  3: 50%~80%
	4: 80%~100%</li>
<li>MemLoad - Int - required: no - 
	0: 0% or unknown; 1: 0%-20%;
	2: 20%~50%  3: 50%~80%
	4: 80%~100%</li>
<li>Quuid: Host QUUID</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method [FirstTime|PartitionCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Grayscale project configuration
 * @class
 */
class ABTestConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Greyscale project name
         * @type {string || null}
         */
        this.ProjectName = null;

        /**
         * true: grayscale release in progress; false: grayscale release not in progress.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectName = 'ProjectName' in params ? params.ProjectName : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Large screen baseline information
 * @class
 */
class ScreenBaselineInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Baseline ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CategoryId = null;

        /**
         * Last check time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastScanTime = null;

        /**
         * Baseline check items with risks
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BaselineFailCount = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.CategoryId = 'CategoryId' in params ? params.CategoryId : null;
        this.LastScanTime = 'LastScanTime' in params ? params.LastScanTime : null;
        this.BaselineFailCount = 'BaselineFailCount' in params ? params.BaselineFailCount : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * Description key-value pair filter, which is used for conditional filtering queries. For example, filter by ID, name, and status.

If there are multiple Filters, the logical relationship between them is AND.
If multiple values exist in one filter, the logical relationship between these values is OR.

* A maximum of 5 filters are allowed.
* If a single filter has multiple values, the number of values cannot exceed 5.

 * @class
 */
class Filter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of filter key
         * @type {string || null}
         */
        this.Name = null;

        /**
         * One or more filter values
         * @type {Array.<string> || null}
         */
        this.Values = null;

        /**
         * Fuzzy search
         * @type {boolean || null}
         */
        this.ExactMatch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Values = 'Values' in params ? params.Values : null;
        this.ExactMatch = 'ExactMatch' in params ? params.ExactMatch : null;

    }
}

/**
 * DescribeAssetMachineTagTop request structure.
 * @class
 */
class DescribeAssetMachineTagTopRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAgentInstallationToken request structure.
 * @class
 */
class DescribeAgentInstallationTokenRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Token expiration time
         * @type {string || null}
         */
        this.ExpireDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExpireDate = 'ExpireDate' in params ? params.ExpireDate : null;

    }
}

/**
 * DescribeVulDefencePluginDetail response structure.
 * @class
 */
class DescribeVulDefencePluginDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of data
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of detailed information on the vulnerability defense plugin
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulDefencePluginDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulDefencePluginDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Java Memory Trojan Plugin Information
 * @class
 */
class JavaMemShellPluginInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Injection Process PID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Injection Process Main Class
         * @type {string || null}
         */
        this.MainClass = null;

        /**
         * Injection Status. 0: Injecting; 1: Injection Succeeded; 2: Plugin Timeout; 3: Plugin Exits; 4: Injection Failed; 5: Soft-delete
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Error logs
         * @type {string || null}
         */
        this.ErrorLog = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.MainClass = 'MainClass' in params ? params.MainClass : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrorLog = 'ErrorLog' in params ? params.ErrorLog : null;

    }
}

/**
 * DescribeAssetDatabaseList response structure.
 * @class
 */
class DescribeAssetDatabaseListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetDatabaseBaseInfo> || null}
         */
        this.Databases = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Databases) {
            this.Databases = new Array();
            for (let z in params.Databases) {
                let obj = new AssetDatabaseBaseInfo();
                obj.deserialize(params.Databases[z]);
                this.Databases.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportMalwares request structure.
 * @class
 */
class ExportMalwaresRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Maximum number of entries. Default value: 10.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter parameters
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>FilePath - String - required: no - filter by path</li>
<li>VirusName - String - required: no - filter by description</li>
<li>CreateBeginTime - String - required: no - filter by creation time - start time</li>
<li>CreateEndTime - String - required: no - filter by creation time - end time</li>
<li>Status - String - required: no - filter by status</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting value: CreateTime
         * @type {string || null}
         */
        this.By = null;

        /**
         * Sorting method: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.By = 'By' in params ? params.By : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * DescribeProcessStatistics request structure.
 * @class
 */
class DescribeProcessStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>ProcessName - String - required: no - process name</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Malicious request list
 * @class
 */
class RiskDnsList extends  AbstractModel {
    constructor(){
        super();

        /**
         * External access domain name
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Access count
         * @type {number || null}
         */
        this.AccessCount = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process MD5
         * @type {string || null}
         */
        this.ProcessMd5 = null;

        /**
         * Whether the rule is global. 0: no; 1: yes.
         * @type {number || null}
         */
        this.GlobalRuleId = null;

        /**
         * User rule ID
         * @type {number || null}
         */
        this.UserRuleId = null;

        /**
         * Status. 0: pending; 2: added to allowlist; 3: untrusted; 4: processed; 5: ignored.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * First access time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last access Time
         * @type {string || null}
         */
        this.MergeTime = null;

        /**
         * Unique QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Alias
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Reference
         * @type {string || null}
         */
        this.Reference = null;

        /**
         * Command line
         * @type {string || null}
         */
        this.CmdLine = null;

        /**
         * Process ID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Recommended solution
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Tag Features
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host online status. OFFLINE: offline; ONLINE: online; UNKNOWN: unknown.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.AccessCount = 'AccessCount' in params ? params.AccessCount : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.ProcessMd5 = 'ProcessMd5' in params ? params.ProcessMd5 : null;
        this.GlobalRuleId = 'GlobalRuleId' in params ? params.GlobalRuleId : null;
        this.UserRuleId = 'UserRuleId' in params ? params.UserRuleId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.MergeTime = 'MergeTime' in params ? params.MergeTime : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Reference = 'Reference' in params ? params.Reference : null;
        this.CmdLine = 'CmdLine' in params ? params.CmdLine : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;

    }
}

/**
 * SyncAssetScan response structure.
 * @class
 */
class SyncAssetScanResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Enumeration values are (in uppercase): NOTASK (no synchronization task), SYNCING (synchronizing), and FINISHED (synchronization completed)
         * @type {string || null}
         */
        this.State = null;

        /**
         * Latest synchronization start time
         * @type {string || null}
         */
        this.LatestStartTime = null;

        /**
         * Last sync end time
         * @type {string || null}
         */
        this.LatestEndTime = null;

        /**
         * Task ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.State = 'State' in params ? params.State : null;
        this.LatestStartTime = 'LatestStartTime' in params ? params.LatestStartTime : null;
        this.LatestEndTime = 'LatestEndTime' in params ? params.LatestEndTime : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * File Scan Overview Information
 * @class
 */
class MalwareRiskOverview extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of affected hosts
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Exceptional Process Count
         * @type {number || null}
         */
        this.ProcessCount = null;

        /**
         * Number of Malicious Files
         * @type {number || null}
         */
        this.FileCount = null;

        /**
         * Is it the first Scan [false: No | true: Yes].
         * @type {boolean || null}
         */
        this.IsFirstScan = null;

        /**
         * Last scan time
         * @type {string || null}
         */
        this.ScanTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.ProcessCount = 'ProcessCount' in params ? params.ProcessCount : null;
        this.FileCount = 'FileCount' in params ? params.FileCount : null;
        this.IsFirstScan = 'IsFirstScan' in params ? params.IsFirstScan : null;
        this.ScanTime = 'ScanTime' in params ? params.ScanTime : null;

    }
}

/**
 * List of information on the asset management kernel module
 * @class
 */
class AssetCoreModuleBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Module size
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Number of dependent processes
         * @type {number || null}
         */
        this.ProcessCount = null;

        /**
         * Number of dependent modules
         * @type {number || null}
         */
        this.ModuleCount = null;

        /**
         * Module ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether new [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Server Public IP
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.ProcessCount = 'ProcessCount' in params ? params.ProcessCount : null;
        this.ModuleCount = 'ModuleCount' in params ? params.ModuleCount : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * CheckLogKafkaConnectionState response structure.
 * @class
 */
class CheckLogKafkaConnectionStateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * true: connected; false: not connected.
         * @type {boolean || null}
         */
        this.IsConnect = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsConnect = 'IsConnect' in params ? params.IsConnect : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBashPolicies request structure.
 * @class
 */
class ExportBashPoliciesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filter parameters
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeScreenBroadcasts response structure.
 * @class
 */
class DescribeScreenBroadcastsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Broadcasting article list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenBroadcasts> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ScreenBroadcasts();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateBaselineStrategy request structure.
 * @class
 */
class CreateBaselineStrategyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Check cycle, indicating the number of days between checks. Example: 2, indicating that the check is carried out every 2 days.
         * @type {number || null}
         */
        this.ScanCycle = null;

        /**
         * Time for a periodic check. The scan task is issued at this time. Example: "22:00", indicating that the task is issued at 22:00.
         * @type {string || null}
         */
        this.ScanAt = null;

        /**
         * Array of selected baseline IDs under this policy. Example: [1,3,5,7]
         * @type {Array.<number> || null}
         */
        this.CategoryIds = null;

        /**
         * Whether all servers are scanned. 1: yes; 0: no. If the value is 1, all Professional Edition hosts are scanned.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Cloud host type:
CVM: virtual machine
BM: bare metal server
ECM: edge computing machine
LH: Lighthouse 
Other: hybrid cloud machine
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Host region. Example: "ap-guangzhou"
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * Host ID array. Example: ["quuid1","quuid2"]
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.ScanCycle = 'ScanCycle' in params ? params.ScanCycle : null;
        this.ScanAt = 'ScanAt' in params ? params.ScanAt : null;
        this.CategoryIds = 'CategoryIds' in params ? params.CategoryIds : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DescribeSecurityTrends request structure.
 * @class
 */
class DescribeSecurityTrendsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time. Example: 2021-07-10
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End time. Example: 2021-07-10
         * @type {string || null}
         */
        this.EndDate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;

    }
}

/**
 * View the fixing status of each vulnerability on each host.
 * @class
 */
class VulFixStatusHostInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Status. 0: initial status; 1: task issued (fixing); 2: completed (successful); 3: fixing failed (failed); 4: fixing failed due to snapshot creation failure (unfixed).
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Fixing time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Fixing failure cause
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FailReason = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.FailReason = 'FailReason' in params ? params.FailReason : null;

    }
}

/**
 * Attack backtracking event
 * @class
 */
class AttackSourceEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event type. 0: virus scanning; 1: abnormal log-in; 2: password cracking; 3: malicious request; 4: high-risk command.
         * @type {number || null}
         */
        this.EventType = null;

        /**
         * [Virus scanning] Virus name: VirusName, file name: FileName, file path: FilePath, file size: FileSize, file MD5: MD5, first detection time: CreateTime, last detection time: LatestScanTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[Abnormal log-in] Source IP: SrcIp, location: Location, log-in username: UserName, log-in time: LoginTime
[Password cracking] Source IP: SrcIp, location: City and Country, protocol: Protocol, log-in username: UserName, port: Port, attempt count: Count, first attack time: CreateTime, last attack time: ModifyTime
[Malicious request] Malicious request domain name: Url, process: ProcessName, MD5: ProcessMd5, PID: Pid, request count: AccessCount, last request time: MergeTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[High-risk command] Hit rule name: RuleName, rule category: RuleCategory, command content: BashCmd, data source: DetectBy, Log-in user: User, PID: Pid, occurrence time: CreateTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Intrusion time
         * @type {string || null}
         */
        this.CreatedTime = null;

        /**
         * Unified event risk level. 0: prompt; 1: low; 2: medium; 3: high; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Risk level string in Chinese
         * @type {string || null}
         */
        this.LevelZh = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.Content = 'Content' in params ? params.Content : null;
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.LevelZh = 'LevelZh' in params ? params.LevelZh : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribePrivilegeRules response structure.
 * @class
 */
class DescribePrivilegeRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List content
         * @type {Array.<PrivilegeRule> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new PrivilegeRule();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeReverseShellEvents response structure.
 * @class
 */
class DescribeReverseShellEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List content
         * @type {Array.<ReverseShell> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReverseShell();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetAppCount request structure.
 * @class
 */
class DescribeAssetAppCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Search for processes of all software whose names contain Name and return a list.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeMaliciousRequestWhiteList request structure.
 * @class
 */
class DescribeMaliciousRequestWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria

<li>Domain - String - baseline name</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeBashEventsNew request structure.
 * @class
 */
class DescribeBashEventsNewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Filter criteria
<li>HostName - String - required: no - host name</li>
<li>Hostip - String - required: no - host's private IP address</li>
<li>HostIp - String - required: no - host's private IP address</li>
<li>RuleCategory - Int - required: no - policy type (all types or a single type): 0: system; 1: user</li><li>RuleName - String - required: no - policy name</li>
<li>RuleLevel - Int - required: no - threat Level (multiple levels supported)</li>
<li>Status - Int - required: no - processing status (multiple statuses supported): 0: pending; 1: processed; 2: added to allowlist; 3: ignored; 4: deleted; 5: blocked</li>
<li>DetectBy - Int - required: no - data source (multiple sources supported): 0: bash logs; 1: real-time monitoring</li>
<li>StartTime - String - required: no - start time</li>
<li>EndTime - String - required: no - end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: sort by number of requests. asc: ascending; desc: descending.
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field. CreateTime: occurrence time; ModifyTime: processing time.
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * List of information on malicious file risks
 * @class
 */
class MalwareRisk extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Virus name
         * @type {string || null}
         */
        this.VirusName = null;

        /**
         * Detection time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.VirusName = 'VirusName' in params ? params.VirusName : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeAssetPortInfoList request structure.
 * @class
 */
class DescribeAssetPortInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query information of a specified QUUID host
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Port - uint64 - Required: no - port</li>
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>ProcessName - String - Required: no - process name</li>
<li>Pid - uint64 - Required: no - PID</li>
<li>User - String - required: no - running user</li>
<li>Group - String - Required: no - user group</li>
<li>Ppid - uint64 - Required: no - PPID</li>
<li>Proto - string - Required: no - tcp/udp or "" (empty string to filter unknown status)</li>
<li>OsType - uint64 - required: no - Windows/Linux</li>
<li>RunTimeStart - String - required: no - running start time</li>
<li>RunTimeEnd - String - required: no - running end time</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of results to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|StartTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVulDefencePluginDetail request structure.
 * @class
 */
class DescribeVulDefencePluginDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criterion. Keywords: IP address or host name. Exception and Status support precise match.
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Data offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Data limit
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DescribeExportMachines request structure.
 * @class
 */
class DescribeExportMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CVM type
<li>CVM: Represent a virtual machine</li>
<li>BM: Represent a physical machine</li>
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Machine region. Example: ap-guangzhou, ap-shanghai
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>Keywords - String - required: no - keyword for query </li>
<li>Status - String - required: no - client online status (OFFLINE: offline | ONLINE: online | UNINSTALLED: not installed)</li>
<li>Version - String - required: no - current protection version (PRO_VERSION: Pro Edition | BASIC_VERSION: Basic Edition)</li>
Only one value is allowed for each filter criterion. Multiple values with the OR relationship are not supported for queries.
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * ID List of Businesses to which machines belong
         * @type {Array.<number> || null}
         */
        this.ProjectIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ProjectIds = 'ProjectIds' in params ? params.ProjectIds : null;

    }
}

/**
 * DescribeAssetInfo response structure.
 * @class
 */
class DescribeAssetInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of Hosts
         * @type {number || null}
         */
        this.MachineCount = null;

        /**
         * Number of Accounts
         * @type {number || null}
         */
        this.AccountCount = null;

        /**
         * Number of ports
         * @type {number || null}
         */
        this.PortCount = null;

        /**
         * Number of Processes
         * @type {number || null}
         */
        this.ProcessCount = null;

        /**
         * Number of software
         * @type {number || null}
         */
        this.SoftwareCount = null;

        /**
         * Number of databases
         * @type {number || null}
         */
        this.DatabaseCount = null;

        /**
         * Number of web applications
         * @type {number || null}
         */
        this.WebAppCount = null;

        /**
         * Number of web frameworks
         * @type {number || null}
         */
        this.WebFrameCount = null;

        /**
         * Number of web services
         * @type {number || null}
         */
        this.WebServiceCount = null;

        /**
         * Number of web sites
         * @type {number || null}
         */
        this.WebLocationCount = null;

        /**
         * New accounts today
         * @type {number || null}
         */
        this.AccountNewCount = null;

        /**
         * New ports today
         * @type {number || null}
         */
        this.PortNewCount = null;

        /**
         * New processes today
         * @type {number || null}
         */
        this.ProcessNewCount = null;

        /**
         * New software today
         * @type {number || null}
         */
        this.SoftwareNewCount = null;

        /**
         * New databases today
         * @type {number || null}
         */
        this.DatabaseNewCount = null;

        /**
         * New web applications today
         * @type {number || null}
         */
        this.WebAppNewCount = null;

        /**
         * New web frameworks today
         * @type {number || null}
         */
        this.WebFrameNewCount = null;

        /**
         * New web services today
         * @type {number || null}
         */
        this.WebServiceNewCount = null;

        /**
         * New web sites today
         * @type {number || null}
         */
        this.WebLocationNewCount = null;

        /**
         * New hosts today
         * @type {number || null}
         */
        this.MachineNewCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineCount = 'MachineCount' in params ? params.MachineCount : null;
        this.AccountCount = 'AccountCount' in params ? params.AccountCount : null;
        this.PortCount = 'PortCount' in params ? params.PortCount : null;
        this.ProcessCount = 'ProcessCount' in params ? params.ProcessCount : null;
        this.SoftwareCount = 'SoftwareCount' in params ? params.SoftwareCount : null;
        this.DatabaseCount = 'DatabaseCount' in params ? params.DatabaseCount : null;
        this.WebAppCount = 'WebAppCount' in params ? params.WebAppCount : null;
        this.WebFrameCount = 'WebFrameCount' in params ? params.WebFrameCount : null;
        this.WebServiceCount = 'WebServiceCount' in params ? params.WebServiceCount : null;
        this.WebLocationCount = 'WebLocationCount' in params ? params.WebLocationCount : null;
        this.AccountNewCount = 'AccountNewCount' in params ? params.AccountNewCount : null;
        this.PortNewCount = 'PortNewCount' in params ? params.PortNewCount : null;
        this.ProcessNewCount = 'ProcessNewCount' in params ? params.ProcessNewCount : null;
        this.SoftwareNewCount = 'SoftwareNewCount' in params ? params.SoftwareNewCount : null;
        this.DatabaseNewCount = 'DatabaseNewCount' in params ? params.DatabaseNewCount : null;
        this.WebAppNewCount = 'WebAppNewCount' in params ? params.WebAppNewCount : null;
        this.WebFrameNewCount = 'WebFrameNewCount' in params ? params.WebFrameNewCount : null;
        this.WebServiceNewCount = 'WebServiceNewCount' in params ? params.WebServiceNewCount : null;
        this.WebLocationNewCount = 'WebLocationNewCount' in params ? params.WebLocationNewCount : null;
        this.MachineNewCount = 'MachineNewCount' in params ? params.MachineNewCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters used to update alarms or inserted into alarms
 * @class
 */
class WarningObject extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event Alarm Type. 1: Offline; 2: Trojan; 3: Exceptional login; 4: Brute force; 5: Vulnerability (split into four types ranging from 9 to 12); 6: High-risk command; 7: Reverse sell; 8: Local privilege escalation;, 9: System component vulnerabilities; 10: Web application vulnerabilities; 11: Emergency vulnerabilities; 12: Security baseline; 14: Malicious request; 15: Network attack; 16: Windows system vulnerabilities; 17: Linux software vulnerabilities
         * @type {number || null}
         */
        this.Type = null;

        /**
         * 1: disable alarm; 0: enable alarm.
         * @type {number || null}
         */
        this.DisablePhoneWarning = null;

        /**
         * Start time. Format: HH:mm.
         * @type {string || null}
         */
        this.BeginTime = null;

        /**
         * End time. Format: HH:mm.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * 1. Vulnerability level control bits in binary. Each bit corresponds to the vulnerability level enabling status on the corresponding page. Level: low, medium, high (0: disabled; 1: enabled). Example: 101, indicating both the low and high levels are enabled. 2. Brute force cracking control bits in binary. 01: notify upon successful brute force cracking; 10: notify upon brute force cracking failure.
         * @type {string || null}
         */
        this.ControlBits = null;

        /**
         * Alarm Host Range Type. 0: All Hosts; 1: By Project; 2: By Tencent Cloud Tag; 3: By Host Security Tag; 4: Custom Hosts
         * @type {number || null}
         */
        this.HostRange = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.DisablePhoneWarning = 'DisablePhoneWarning' in params ? params.DisablePhoneWarning : null;
        this.BeginTime = 'BeginTime' in params ? params.BeginTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ControlBits = 'ControlBits' in params ? params.ControlBits : null;
        this.HostRange = 'HostRange' in params ? params.HostRange : null;

    }
}

/**
 * DescribeAssetPortCount response structure.
 * @class
 */
class DescribeAssetPortCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of processes
         * @type {Array.<AssetKeyVal> || null}
         */
        this.Ports = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Ports) {
            this.Ports = new Array();
            for (let z in params.Ports) {
                let obj = new AssetKeyVal();
                obj.deserialize(params.Ports[z]);
                this.Ports.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenMachines request structure.
 * @class
 */
class DescribeScreenMachinesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host region
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Private IP address or host alias
         * @type {string || null}
         */
        this.MachineIpOrAlias = null;

        /**
         * Risky host type. 0: all types; 1: risky host; 2: host with potential risks; 3: host that is shut down or offline; 4: host with no risk.
         * @type {number || null}
         */
        this.SecurityStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.MachineIpOrAlias = 'MachineIpOrAlias' in params ? params.MachineIpOrAlias : null;
        this.SecurityStatus = 'SecurityStatus' in params ? params.SecurityStatus : null;

    }
}

/**
 * DeleteMalwareScanTask request structure.
 * @class
 */
class DeleteMalwareScanTaskRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Details of large screen intrusion event
 * @class
 */
class ScreenInvasion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intrusion time
         * @type {string || null}
         */
        this.CreatedTime = null;

        /**
         * Event type. 0: virus scanning; 1: abnormal log-in; 2: password cracking; 3: malicious request; 4: high-risk command; 5: local privilege escalation; 6: reverse shell.
         * @type {number || null}
         */
        this.EventType = null;

        /**
         * JSON file of the event data, which varies by event.
[Virus scanning] Virus name: VirusName, file name: FileName, file path: FilePath, file size: FileSize, file MD5: MD5, first detection time: CreateTime, last detection time: LatestScanTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[Abnormal log-in] Source IP: SrcIp, location: Location, log-in username: UserName, log-in time: LoginTime
[Password cracking]Source IP: SrcIp, location: City and Country, protocol: Protocol, log-in username: UserName, port: Port, attempt count: Count, first attack time: CreateTime, last attack time: ModifyTime
[Malicious request] Malicious request domain name: Url, process: ProcessName, MD5: ProcessMd5, PID: Pid, request count: AccessCount, last request time: MergeTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[High-risk command] Hit rule name: RuleName, rule category: RuleCategory, command content: BashCmd, data source: DetectBy, Log-in user: User, PID: Pid, occurrence time: CreateTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[Local privilege escalation] Privilege escalation user: UserName, parent process: ParentProcName, user of parent process: ParentProcGroup, Detection time: CreateTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
[Reverse shell] Connected process: ProcessName, executed command: CmdLine, parent process: ParentProcName, target host: DstIp, target port: DstPort, detection time: CreateTime, severity description: HarmDescribe, fixing suggestion: SuggestScheme
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Unified event risk level. 0: prompt; 1: low; 2: medium; 3: high; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Level in Chinese
         * @type {string || null}
         */
        this.LevelZh = null;

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CreatedTime = 'CreatedTime' in params ? params.CreatedTime : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.Content = 'Content' in params ? params.Content : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.LevelZh = 'LevelZh' in params ? params.LevelZh : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * ExportBashPolicies response structure.
 * @class
 */
class ExportBashPoliciesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyEventAttackStatus response structure.
 * @class
 */
class ModifyEventAttackStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeIgnoreRuleEffectHostList response structure.
 * @class
 */
class DescribeIgnoreRuleEffectHostListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of hosts affected by ignored check items
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<IgnoreRuleEffectHostInfo> || null}
         */
        this.IgnoreRuleEffectHostList = null;

        /**
         * Total number of records for paging query
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.IgnoreRuleEffectHostList) {
            this.IgnoreRuleEffectHostList = new Array();
            for (let z in params.IgnoreRuleEffectHostList) {
                let obj = new IgnoreRuleEffectHostInfo();
                obj.deserialize(params.IgnoreRuleEffectHostList[z]);
                this.IgnoreRuleEffectHostList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Core File Monitoring Rule Details
 * @class
 */
class FileTamperRuleDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Update time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Status. 0: Enabled; 1: Disabled
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Rule
         * @type {Array.<FileTamperRule> || null}
         */
        this.Rule = null;

        /**
         * Effective Host UUID. Empty means all hosts, and returned number of entries can be controlled through parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Global Rule or Not (No by Default). 0: No; 1: Yes
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Risk Level. 0: None; 1: High-Risk; 2: Medium-Risk; 3: Low-Risk
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Total Number of Effective Hosts
         * @type {number || null}
         */
        this.UuidTotalCount = null;

        /**
         * Allowlisted processing type
<li>cur: add the current items to the allowlist</li>
<li>all: add all items that meet the conditions to the allowlist</li>
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AddWhiteType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Status = 'Status' in params ? params.Status : null;

        if (params.Rule) {
            this.Rule = new Array();
            for (let z in params.Rule) {
                let obj = new FileTamperRule();
                obj.deserialize(params.Rule[z]);
                this.Rule.push(obj);
            }
        }
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.UuidTotalCount = 'UuidTotalCount' in params ? params.UuidTotalCount : null;
        this.AddWhiteType = 'AddWhiteType' in params ? params.AddWhiteType : null;

    }
}

/**
 * CreateBaselineStrategy response structure.
 * @class
 */
class CreateBaselineStrategyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAssetCoreModuleList response structure.
 * @class
 */
class ExportAssetCoreModuleListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download of task ID, to be used with the ExportTasks API
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyMachineAutoClearConfig response structure.
 * @class
 */
class ModifyMachineAutoClearConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeHistoryAccounts response structure.
 * @class
 */
class DescribeHistoryAccountsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records in the history account list
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Array of history accounts
         * @type {Array.<HistoryAccount> || null}
         */
        this.HistoryAccounts = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.HistoryAccounts) {
            this.HistoryAccounts = new Array();
            for (let z in params.HistoryAccounts) {
                let obj = new HistoryAccount();
                obj.deserialize(params.HistoryAccounts[z]);
                this.HistoryAccounts.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline Custom Rule ID and Name
 * @class
 */
class BaselineCustomRuleIdName extends  AbstractModel {
    constructor(){
        super();

        /**
         * Custom rule ID 
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Custom Rule Name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.RuleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;

    }
}

/**
 * DescribeLogStorageConfig response structure.
 * @class
 */
class DescribeLogStorageConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Storage type. The value is an array of strings.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Type = null;

        /**
         * Log retention days. The value 3640 means the retention days are not limited.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Period = null;

        /**
         * Count of period changes in this month
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PeriodModifyCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Period = 'Period' in params ? params.Period : null;
        this.PeriodModifyCount = 'PeriodModifyCount' in params ? params.PeriodModifyCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulEmergentMsg response structure.
 * @class
 */
class DescribeVulEmergentMsgResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability emergency notification data
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulEmergentMsgInfo> || null}
         */
        this.EmergentMsgList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.EmergentMsgList) {
            this.EmergentMsgList = new Array();
            for (let z in params.EmergentMsgList) {
                let obj = new VulEmergentMsgInfo();
                obj.deserialize(params.EmergentMsgList[z]);
                this.EmergentMsgList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLoginWhiteList request structure.
 * @class
 */
class DescribeLoginWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of returned entries. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filter criteria
<li>IpOrAlias - String - required: no - keyword for search </li>
<li>UserName - String - required: no - username for filtering </li>
<li>ModifyBeginTime - String - required: no - modification start time for filtering </li>
<li>ModifyEndTime - String - required: no - modification end time for filtering </li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeAssetDatabaseCount request structure.
 * @class
 */
class DescribeAssetDatabaseCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: Return a list of databases whose names contain Name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * ModifyWarningSetting request structure.
 * @class
 */
class ModifyWarningSettingRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Modified alarm setting content
         * @type {Array.<WarningObject> || null}
         */
        this.WarningObjects = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WarningObjects) {
            this.WarningObjects = new Array();
            for (let z in params.WarningObjects) {
                let obj = new WarningObject();
                obj.deserialize(params.WarningObjects[z]);
                this.WarningObjects.push(obj);
            }
        }

    }
}

/**
 * ExportVulDetectionReport response structure.
 * @class
 */
class ExportVulDetectionReportResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download URL for exported file
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * ID of the task for exporting detection report (different from the vulnerability scan task ID in the input parameters)
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanSchedule request structure.
 * @class
 */
class DescribeScanScheduleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * CheckFirstScanBaseline request structure.
 * @class
 */
class CheckFirstScanBaselineRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLicenseGeneral response structure.
 * @class
 */
class DescribeLicenseGeneralResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of authorizations (including those that are isolated, expired, and in other states)
         * @type {number || null}
         */
        this.LicenseCnt = null;

        /**
         * Number of available authorizations
         * @type {number || null}
         */
        this.AvailableLicenseCnt = null;

        /**
         * Number of available Professional Edition authorizations (including those in postpaid mode)
         * @type {number || null}
         */
        this.AvailableProVersionLicenseCnt = null;

        /**
         * Number of available Ultimate Edition authorizations
         * @type {number || null}
         */
        this.AvailableFlagshipVersionLicenseCnt = null;

        /**
         * Number of authorizations about to expire (no more than 15 days left)
         * @type {number || null}
         */
        this.NearExpiryLicenseCnt = null;

        /**
         * Number of expired authorizations (excluding deleted ones)
         * @type {number || null}
         */
        this.ExpireLicenseCnt = null;

        /**
         * Automatic upgrade enabling status. True: enabled; false: disabled. Default value: false.
         * @type {boolean || null}
         */
        this.AutoOpenStatus = null;

        /**
         * PROVERSION_POSTPAY: Pro Edition - postpaid; PROVERSION_PREPAY: Pro edition - prepaid; FLAGSHIP_PREPAY: Ultimate Edition - prepaid.
         * @type {string || null}
         */
        this.ProtectType = null;

        /**
         * Whether automatic upgrade has been enabled before
         * @type {boolean || null}
         */
        this.IsOpenStatusHistory = null;

        /**
         * Number of used authorizations
         * @type {number || null}
         */
        this.UsedLicenseCnt = null;

        /**
         * Number of authorizations that have not expired
         * @type {number || null}
         */
        this.NotExpiredLicenseCnt = null;

        /**
         * Total number of Ultimate Edition authorizations (valid orders)
         * @type {number || null}
         */
        this.FlagshipVersionLicenseCnt = null;

        /**
         * Total number of Pro Edition authorizations (valid orders)
         * @type {number || null}
         */
        this.ProVersionLicenseCnt = null;

        /**
         * Total number of Inclusive Edition authorizations (those of valid orders)
         * @type {number || null}
         */
        this.CwpVersionLicenseCnt = null;

        /**
         * Number of available Inclusive Edition authorizations
         * @type {number || null}
         */
        this.AvailableLHLicenseCnt = null;

        /**
         * Auto-purchase switch, true for ON, false for OFF
         * @type {boolean || null}
         */
        this.AutoRepurchaseSwitch = null;

        /**
         * Is auto-renewal required for auto-purchase orders, true for ON, false for OFF
         * @type {boolean || null}
         */
        this.AutoRepurchaseRenewSwitch = null;

        /**
         * Number of terminated orders
         * @type {number || null}
         */
        this.DestroyOrderNum = null;

        /**
         * Whether automatic renewal is enabled. True: enabled; false: disabled.
         * @type {boolean || null}
         */
        this.RepurchaseRenewSwitch = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseCnt = 'LicenseCnt' in params ? params.LicenseCnt : null;
        this.AvailableLicenseCnt = 'AvailableLicenseCnt' in params ? params.AvailableLicenseCnt : null;
        this.AvailableProVersionLicenseCnt = 'AvailableProVersionLicenseCnt' in params ? params.AvailableProVersionLicenseCnt : null;
        this.AvailableFlagshipVersionLicenseCnt = 'AvailableFlagshipVersionLicenseCnt' in params ? params.AvailableFlagshipVersionLicenseCnt : null;
        this.NearExpiryLicenseCnt = 'NearExpiryLicenseCnt' in params ? params.NearExpiryLicenseCnt : null;
        this.ExpireLicenseCnt = 'ExpireLicenseCnt' in params ? params.ExpireLicenseCnt : null;
        this.AutoOpenStatus = 'AutoOpenStatus' in params ? params.AutoOpenStatus : null;
        this.ProtectType = 'ProtectType' in params ? params.ProtectType : null;
        this.IsOpenStatusHistory = 'IsOpenStatusHistory' in params ? params.IsOpenStatusHistory : null;
        this.UsedLicenseCnt = 'UsedLicenseCnt' in params ? params.UsedLicenseCnt : null;
        this.NotExpiredLicenseCnt = 'NotExpiredLicenseCnt' in params ? params.NotExpiredLicenseCnt : null;
        this.FlagshipVersionLicenseCnt = 'FlagshipVersionLicenseCnt' in params ? params.FlagshipVersionLicenseCnt : null;
        this.ProVersionLicenseCnt = 'ProVersionLicenseCnt' in params ? params.ProVersionLicenseCnt : null;
        this.CwpVersionLicenseCnt = 'CwpVersionLicenseCnt' in params ? params.CwpVersionLicenseCnt : null;
        this.AvailableLHLicenseCnt = 'AvailableLHLicenseCnt' in params ? params.AvailableLHLicenseCnt : null;
        this.AutoRepurchaseSwitch = 'AutoRepurchaseSwitch' in params ? params.AutoRepurchaseSwitch : null;
        this.AutoRepurchaseRenewSwitch = 'AutoRepurchaseRenewSwitch' in params ? params.AutoRepurchaseRenewSwitch : null;
        this.DestroyOrderNum = 'DestroyOrderNum' in params ? params.DestroyOrderNum : null;
        this.RepurchaseRenewSwitch = 'RepurchaseRenewSwitch' in params ? params.RepurchaseRenewSwitch : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Intrusion detection statistics
 * @class
 */
class ScreenEventsCnt extends  AbstractModel {
    constructor(){
        super();

        /**
         * Displayed content: Total number of pending risks and total number of affected assets
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Total number of events
         * @type {number || null}
         */
        this.Total = null;

        /**
         * name: Specific type of the displayed content, including attack event, potential risk, compromised asset, and potentially risky asset
Value: event count after statistics
         * @type {Array.<ScreenNameValue> || null}
         */
        this.Category = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Title = 'Title' in params ? params.Title : null;
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Category) {
            this.Category = new Array();
            for (let z in params.Category) {
                let obj = new ScreenNameValue();
                obj.deserialize(params.Category[z]);
                this.Category.push(obj);
            }
        }

    }
}

/**
 * DescribeFastAnalysis response structure.
 * @class
 */
class DescribeFastAnalysisResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistical data after analysis
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<FieldValueRatioInfo> || null}
         */
        this.FieldValueRatioInfos = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FieldValueRatioInfos) {
            this.FieldValueRatioInfos = new Array();
            for (let z in params.FieldValueRatioInfos) {
                let obj = new FieldValueRatioInfo();
                obj.deserialize(params.FieldValueRatioInfos[z]);
                this.FieldValueRatioInfos.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Data of listed hosts on the large screen
 * @class
 */
class ScreenMachine extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host name.
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Host System.
         * @type {string || null}
         */
        this.MachineOs = null;

        /**
         * Yunjing client UUID. If the client is offline for a long time, an empty string is returned.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Status of a host on the large screen. 0: agent not installed; 1: offline; 2: offline - risky; 3: offline - critical;
4: device installed - normal; 5: device installed - normal and of either Pro Edition or Ultimate Edition; 6: device installed - risky (network attack events > 0);
7: device installed - risky (network attack events > 0) and of either Pro Edition or Ultimate Edition; 8: device installed - critical (intrusion detection events > 0);
9: device installed - critical (intrusion detection events > 0) and of either Pro Edition or Ultimate Edition
         * @type {number || null}
         */
        this.MachineStatus = null;

        /**
         * CVM or BM Machine Unique UUID.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Number of vulnerabilities
         * @type {number || null}
         */
        this.VulNum = null;

        /**
         * Host IP.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address of the host
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Number of baseline risks
         * @type {number || null}
         */
        this.BaselineNum = null;

        /**
         * Number of network risks
         * @type {number || null}
         */
        this.CyberAttackNum = null;

        /**
         * Risk status
<li>SAFE: Safe</li>
<li>RISK: Risk</li>
<li>UNKNOWN: Unknown</li>
         * @type {string || null}
         */
        this.SecurityStatus = null;

        /**
         * Number of intrusion events
         * @type {number || null}
         */
        this.InvasionNum = null;

        /**
         * Machine Zone Type. CVM - Cloud Virtual Machine; BM: Bare Metal; ECM: Edge Computing Machine; LH: Lightweight Application Server; Other: Hybrid Cloud Zone
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * CPU load status
         * @type {string || null}
         */
        this.CpuLoad = null;

        /**
         * Number of CPU cores
         * @type {number || null}
         */
        this.CpuSize = null;

        /**
         * Hard disk utilization (%)
         * @type {string || null}
         */
        this.DiskLoad = null;

        /**
         * Hard disk capacity (GB)
         * @type {number || null}
         */
        this.DiskSize = null;

        /**
         * Memory utilization (%)
         * @type {string || null}
         */
        this.MemLoad = null;

        /**
         * Memory capacity (GB)
         * @type {number || null}
         */
        this.MemSize = null;

        /**
         * Kernel version
         * @type {string || null}
         */
        this.CoreVersion = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.MachineOs = 'MachineOs' in params ? params.MachineOs : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.VulNum = 'VulNum' in params ? params.VulNum : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.BaselineNum = 'BaselineNum' in params ? params.BaselineNum : null;
        this.CyberAttackNum = 'CyberAttackNum' in params ? params.CyberAttackNum : null;
        this.SecurityStatus = 'SecurityStatus' in params ? params.SecurityStatus : null;
        this.InvasionNum = 'InvasionNum' in params ? params.InvasionNum : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.CpuLoad = 'CpuLoad' in params ? params.CpuLoad : null;
        this.CpuSize = 'CpuSize' in params ? params.CpuSize : null;
        this.DiskLoad = 'DiskLoad' in params ? params.DiskLoad : null;
        this.DiskSize = 'DiskSize' in params ? params.DiskSize : null;
        this.MemLoad = 'MemLoad' in params ? params.MemLoad : null;
        this.MemSize = 'MemSize' in params ? params.MemSize : null;
        this.CoreVersion = 'CoreVersion' in params ? params.CoreVersion : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeAESKey request structure.
 * @class
 */
class DescribeAESKeyRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyWebHookRule response structure.
 * @class
 */
class ModifyWebHookRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetLoadInfo request structure.
 * @class
 */
class DescribeAssetLoadInfoRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ModifyMaliciousRequestWhiteList request structure.
 * @class
 */
class ModifyMaliciousRequestWhiteListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Allowlisted domain names
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.Mark = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Mark = 'Mark' in params ? params.Mark : null;

    }
}

/**
 * RetryCreateSnapshot response structure.
 * @class
 */
class RetryCreateSnapshotResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateBuyBindTask response structure.
 * @class
 */
class CreateBuyBindTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportScanTaskDetails request structure.
 * @class
 */
class ExportScanTaskDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID for this detection (different from the ID of the task for exporting the detection Excel file in the input parameters)
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Module type. Malware: Trojan; Vul: vulnerability; Baseline: baseline.
         * @type {string || null}
         */
        this.ModuleType = null;

        /**
         * Filter parameter: ipOrAlias (server name/IP address)
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportBaselineList response structure.
 * @class
 */
class ExportBaselineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download URL of exported file (deprecated)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBruteAttackRules response structure.
 * @class
 */
class DescribeBruteAttackRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of rules for blocking brute force cracking
         * @type {Array.<BruteAttackRuleList> || null}
         */
        this.Rules = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Rules) {
            this.Rules = new Array();
            for (let z in params.Rules) {
                let obj = new BruteAttackRuleList();
                obj.deserialize(params.Rules[z]);
                this.Rules.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBanMode response structure.
 * @class
 */
class ModifyBanModeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulDefencePluginExceptionCount response structure.
 * @class
 */
class DescribeVulDefencePluginExceptionCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Current number of abnormal plugins
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Count = 'Count' in params ? params.Count : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteLicenseRecord response structure.
 * @class
 */
class DeleteLicenseRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic information on the resource management process
 * @class
 */
class AssetProcessBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Process description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Process ID
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Startup time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Startup parameter
         * @type {string || null}
         */
        this.Param = null;

        /**
         * Process TTY
         * @type {string || null}
         */
        this.Tty = null;

        /**
         * Process version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Process user group
         * @type {string || null}
         */
        this.GroupName = null;

        /**
         * Process MD5
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Parent process ID
         * @type {string || null}
         */
        this.Ppid = null;

        /**
         * Parent process name
         * @type {string || null}
         */
        this.ParentProcessName = null;

        /**
         * Process status
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Digital signature. 0: no; 1: yes; 999: null (Windows only).
         * @type {number || null}
         */
        this.HasSign = null;

        /**
         * Whether to install the package. 0: no; 1: yes; 999: null (Linux only).
         * @type {number || null}
         */
        this.InstallByPackage = null;

        /**
         * Software package name
         * @type {string || null}
         */
        this.PackageName = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether new [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.User = 'User' in params ? params.User : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.Param = 'Param' in params ? params.Param : null;
        this.Tty = 'Tty' in params ? params.Tty : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.GroupName = 'GroupName' in params ? params.GroupName : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Ppid = 'Ppid' in params ? params.Ppid : null;
        this.ParentProcessName = 'ParentProcessName' in params ? params.ParentProcessName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.HasSign = 'HasSign' in params ? params.HasSign : null;
        this.InstallByPackage = 'InstallByPackage' in params ? params.InstallByPackage : null;
        this.PackageName = 'PackageName' in params ? params.PackageName : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeVulDefenceOverview request structure.
 * @class
 */
class DescribeVulDefenceOverviewRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeCanNotSeparateMachine request structure.
 * @class
 */
class DescribeCanNotSeparateMachineRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * An array of event IDs that need to be modified, and batch operation is supported.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

        /**
         * Whether to update all, i.e. whether to operate on all events; this parameter is invalid when IDs are not left blank.
         * @type {boolean || null}
         */
        this.UpdateAll = null;

        /**
         * Excluded event ID: When operating on all events, this ID needs to be excluded.
         * @type {Array.<number> || null}
         */
        this.ExcludeId = null;

        /**
         * <li>IpOrAlias - String - required: no - filter by host IP or alias</li>
<li>FilePath - String - required: no - filter by path</li>
<li>VirusName - String - required: no - filter by description</li>
<li>CreateBeginTime - String - required: no - filter by creation time - start time</li>
<li>CreateEndTime - String - required: no - filter by creation time - end time</li>
<li>Status - String - required: no - status for filtering: 4: pending; 5: trusted; 6: isolated; 10: isolating; 11: canceling isolation</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.UpdateAll = 'UpdateAll' in params ? params.UpdateAll : null;
        this.ExcludeId = 'ExcludeId' in params ? params.ExcludeId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribeRiskDnsEventList response structure.
 * @class
 */
class DescribeRiskDnsEventListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious Request Event List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RiskDnsEvent> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RiskDnsEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteBruteAttacks request structure.
 * @class
 */
class DeleteBruteAttacksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Array of brute force cracking event IDs (maximum: 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeAssetCoreModuleList response structure.
 * @class
 */
class DescribeAssetCoreModuleListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetCoreModuleBaseInfo> || null}
         */
        this.Modules = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Modules) {
            this.Modules = new Array();
            for (let z in params.Modules) {
                let obj = new AssetCoreModuleBaseInfo();
                obj.deserialize(params.Modules[z]);
                this.Modules.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseState response structure.
 * @class
 */
class DescribeRansomDefenseStateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of Activated Defense Policies
         * @type {number || null}
         */
        this.StrategyCount = null;

        /**
         * Number of Protected Machines
         * @type {number || null}
         */
        this.MachineCount = null;

        /**
         * Total snapshot capacity
         * @type {number || null}
         */
        this.SnapshotSize = null;

        /**
         * Number of Backup Recovery Tasks
         * @type {number || null}
         */
        this.RollBackTaskCount = null;

        /**
         * Number of Snapshot Creation Tasks in Progress
         * @type {number || null}
         */
        this.ProgressingSnapshotTaskCount = null;

        /**
         * Number of Backup Recovery Tasks in Progress
         * @type {number || null}
         */
        this.ProgressingRollBackTaskCount = null;

        /**
         * Total Number of Machines
         * @type {number || null}
         */
        this.MachineTotal = null;

        /**
         * Total number of policies
         * @type {number || null}
         */
        this.StrategyTotal = null;

        /**
         * Account Status. 0 - Without Overdue Payment; 1 - With Overdue Payment
         * @type {number || null}
         */
        this.BalanceStatus = null;

        /**
         * Number of Backed-Up Hosts
         * @type {number || null}
         */
        this.BackupMachineCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyCount = 'StrategyCount' in params ? params.StrategyCount : null;
        this.MachineCount = 'MachineCount' in params ? params.MachineCount : null;
        this.SnapshotSize = 'SnapshotSize' in params ? params.SnapshotSize : null;
        this.RollBackTaskCount = 'RollBackTaskCount' in params ? params.RollBackTaskCount : null;
        this.ProgressingSnapshotTaskCount = 'ProgressingSnapshotTaskCount' in params ? params.ProgressingSnapshotTaskCount : null;
        this.ProgressingRollBackTaskCount = 'ProgressingRollBackTaskCount' in params ? params.ProgressingRollBackTaskCount : null;
        this.MachineTotal = 'MachineTotal' in params ? params.MachineTotal : null;
        this.StrategyTotal = 'StrategyTotal' in params ? params.StrategyTotal : null;
        this.BalanceStatus = 'BalanceStatus' in params ? params.BalanceStatus : null;
        this.BackupMachineCount = 'BackupMachineCount' in params ? params.BackupMachineCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeFastAnalysis request structure.
 * @class
 */
class DescribeFastAnalysisRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time. Unit: ms.
         * @type {number || null}
         */
        this.From = null;

        /**
         * End time. Unit: ms.
         * @type {number || null}
         */
        this.To = null;

        /**
         * Query statement, up to 4096 in statement length
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Log field name
         * @type {string || null}
         */
        this.FieldName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.From = 'From' in params ? params.From : null;
        this.To = 'To' in params ? params.To : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.FieldName = 'FieldName' in params ? params.FieldName : null;

    }
}

/**
 * DescribeRiskBatchStatus request structure.
 * @class
 */
class DescribeRiskBatchStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operation event type. MALWARE: virus scanning; HOST_LOGIN: abnormal log-in; BRUTE_ATTACK: password cracking; MALICIOUS_REQUEST: malicious request; BASH_EVENT: high-risk command; PRIVILEGE_EVENT: local privilege escalation; REVERSE_SHELL: reverse shell.
         * @type {string || null}
         */
        this.RiskType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RiskType = 'RiskType' in params ? params.RiskType : null;

    }
}

/**
 * DescribeLoginWhiteCombinedList response structure.
 * @class
 */
class DescribeLoginWhiteCombinedListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of allowlists after merge
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<LoginWhiteCombinedInfo> || null}
         */
        this.LoginWhiteCombinedInfos = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.LoginWhiteCombinedInfos) {
            this.LoginWhiteCombinedInfos = new Array();
            for (let z in params.LoginWhiteCombinedInfos) {
                let obj = new LoginWhiteCombinedInfo();
                obj.deserialize(params.LoginWhiteCombinedInfos[z]);
                this.LoginWhiteCombinedInfos.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteMachineClearHistory response structure.
 * @class
 */
class DeleteMachineClearHistoryResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLicenseWhiteConfig response structure.
 * @class
 */
class DescribeLicenseWhiteConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Ultimate Edition configuration information
         * @type {VersionWhiteConfig || null}
         */
        this.FlagShip = null;

        /**
         * Pro Edition configuration information
         * @type {VersionWhiteConfig || null}
         */
        this.Professional = null;

        /**
         * Inclusive Edition configuration information
         * @type {VersionWhiteConfig || null}
         */
        this.PrattWhitney = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FlagShip) {
            let obj = new VersionWhiteConfig();
            obj.deserialize(params.FlagShip)
            this.FlagShip = obj;
        }

        if (params.Professional) {
            let obj = new VersionWhiteConfig();
            obj.deserialize(params.Professional)
            this.Professional = obj;
        }

        if (params.PrattWhitney) {
            let obj = new VersionWhiteConfig();
            obj.deserialize(params.PrattWhitney)
            this.PrattWhitney = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulDetectionExcel response structure.
 * @class
 */
class ExportVulDetectionExcelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been discarded.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, which is used to obtain the download URL (DownloadUrl) by using the asynchronous task export API ExportTasks. (This ID differs from the vulnerability detection task ID in the input parameters.)
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWarningHostConfig response structure.
 * @class
 */
class ModifyWarningHostConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result details of statistics within the histogram period
 * @class
 */
class LogHistogram extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of logs within the statistical period
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Unix timestamp rounded by period, in ms
         * @type {number || null}
         */
        this.TimeStamp = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Count = 'Count' in params ? params.Count : null;
        this.TimeStamp = 'TimeStamp' in params ? params.TimeStamp : null;

    }
}

/**
 * DescribeVulCveIdInfo response structure.
 * @class
 */
class DescribeVulCveIdInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detail list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulInfoByCveId> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new VulInfoByCveId();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAlarmVertexId response structure.
 * @class
 */
class DescribeAlarmVertexIdResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of alarm IDs
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.AlarmVertexIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmVertexIds = 'AlarmVertexIds' in params ? params.AlarmVertexIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSearchTemplate request structure.
 * @class
 */
class CreateSearchTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search template
         * @type {SearchTemplate || null}
         */
        this.SearchTemplate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SearchTemplate) {
            let obj = new SearchTemplate();
            obj.deserialize(params.SearchTemplate)
            this.SearchTemplate = obj;
        }

    }
}

/**
 * DeleteTags request structure.
 * @class
 */
class DeleteTagsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         *  Tag ID (maximum: 100)
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeScanState request structure.
 * @class
 */
class DescribeScanStateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Module type. Malware (Trojan), Vul (vulnerability), and Baseline are currently available.
         * @type {string || null}
         */
        this.ModuleType = null;

        /**
         * Filter parameters
<li>StrategyId: Baseline policy ID, which is required only if ModuleType is set to Baseline</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * SyncBaselineDetectSummary response structure.
 * @class
 */
class SyncBaselineDetectSummaryResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Processing progress
         * @type {number || null}
         */
        this.ProgressRate = null;

        /**
         * Total number of failed policies
         * @type {number || null}
         */
        this.NotPassPolicyCount = null;

        /**
         * Total number of hosts
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * 1: first scan about to start; 0: already scanned.
         * @type {number || null}
         */
        this.WillFirstScan = null;

        /**
         * ID of ongoing detection task
         * @type {Array.<number> || null}
         */
        this.DetectingTaskIds = null;

        /**
         * Remaining scanning time (minutes)
         * @type {number || null}
         */
        this.LeftMins = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProgressRate = 'ProgressRate' in params ? params.ProgressRate : null;
        this.NotPassPolicyCount = 'NotPassPolicyCount' in params ? params.NotPassPolicyCount : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.WillFirstScan = 'WillFirstScan' in params ? params.WillFirstScan : null;
        this.DetectingTaskIds = 'DetectingTaskIds' in params ? params.DetectingTaskIds : null;
        this.LeftMins = 'LeftMins' in params ? params.LeftMins : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportFileTamperRules response structure.
 * @class
 */
class ExportFileTamperRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The export task ID can be downloaded through the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAgentInstallCommand response structure.
 * @class
 */
class DescribeAgentInstallCommandResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Linux installation command
         * @type {string || null}
         */
        this.LinuxCommand = null;

        /**
         * Windows installation command (Windows 2008 or later)
         * @type {string || null}
         */
        this.WindowsCommand = null;

        /**
         * Step 1 of Window installation command (Windows 2003)
         * @type {string || null}
         */
        this.WindowsStepOne = null;

        /**
         * Step 2 of Window installation command (Windows 2003)
         * @type {string || null}
         */
        this.WindowsStepTwo = null;

        /**
         * Download URL of the agent for Windows
         * @type {string || null}
         */
        this.WindowsDownloadUrl = null;

        /**
         * Arm installation command
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ARMCommand = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LinuxCommand = 'LinuxCommand' in params ? params.LinuxCommand : null;
        this.WindowsCommand = 'WindowsCommand' in params ? params.WindowsCommand : null;
        this.WindowsStepOne = 'WindowsStepOne' in params ? params.WindowsStepOne : null;
        this.WindowsStepTwo = 'WindowsStepTwo' in params ? params.WindowsStepTwo : null;
        this.WindowsDownloadUrl = 'WindowsDownloadUrl' in params ? params.WindowsDownloadUrl : null;
        this.ARMCommand = 'ARMCommand' in params ? params.ARMCommand : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSafeInfo response structure.
 * @class
 */
class DescribeSafeInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of asset management environment variables
 * @class
 */
class AssetEnvBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type:
0: user variable
1: system variable
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Startup user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Environment variable value
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether new [0: no|1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Server Public IP
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.User = 'User' in params ? params.User : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * ModifyVulDefenceEventStatus response structure.
 * @class
 */
class ModifyVulDefenceEventStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Malicious file details
 * @class
 */
class MalwareInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Virus name
         * @type {string || null}
         */
        this.VirusName = null;

        /**
         * File size
         * @type {number || null}
         */
        this.FileSize = null;

        /**
         * File MD5
         * @type {string || null}
         */
        this.MD5 = null;

        /**
         * File address
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * First running time
         * @type {string || null}
         */
        this.FileCreateTime = null;

        /**
         * Last running time
         * @type {string || null}
         */
        this.FileModifierTime = null;

        /**
         * Severity description
         * @type {string || null}
         */
        this.HarmDescribe = null;

        /**
         * Recommended solution
         * @type {string || null}
         */
        this.SuggestScheme = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.ServersName = null;

        /**
         * Server IP
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process ID
         * @type {string || null}
         */
        this.ProcessID = null;

        /**
         * Tag Features
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Impact breadth // Not provided currently
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Breadth = null;

        /**
         * Search popularity // Not provided currently
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Heat = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * File name
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * First detection time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last scan time
         * @type {string || null}
         */
        this.LatestScanTime = null;

        /**
         * Reference link
         * @type {string || null}
         */
        this.Reference = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Process tree in JSON format. pid: process ID; exe: file path; account: groups and users to which the process belongs; cmdline: executed commands; ssh_service: SSH service IP; ssh_source: log-in source
.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PsTree = null;

        /**
         * Online status of a host: OFFLINE and ONLINE
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineStatus = null;

        /**
         * Status. 4: pending; 5: trusted; 6: isolated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Risk level. 0: prompt; 1: low; 2: medium; 3: high; 4: critical.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Trojan detection platforms, separated with commas. 1: cloud security engine; 2: TAV; 3: BinaryAI; 4: abnormal behavior; 5: threat intelligence.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CheckPlatform = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Last modification time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Last access time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StrFileAccessTime = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VirusName = 'VirusName' in params ? params.VirusName : null;
        this.FileSize = 'FileSize' in params ? params.FileSize : null;
        this.MD5 = 'MD5' in params ? params.MD5 : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.FileCreateTime = 'FileCreateTime' in params ? params.FileCreateTime : null;
        this.FileModifierTime = 'FileModifierTime' in params ? params.FileModifierTime : null;
        this.HarmDescribe = 'HarmDescribe' in params ? params.HarmDescribe : null;
        this.SuggestScheme = 'SuggestScheme' in params ? params.SuggestScheme : null;
        this.ServersName = 'ServersName' in params ? params.ServersName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.ProcessID = 'ProcessID' in params ? params.ProcessID : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Breadth = 'Breadth' in params ? params.Breadth : null;
        this.Heat = 'Heat' in params ? params.Heat : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.LatestScanTime = 'LatestScanTime' in params ? params.LatestScanTime : null;
        this.Reference = 'Reference' in params ? params.Reference : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.PsTree = 'PsTree' in params ? params.PsTree : null;
        this.MachineStatus = 'MachineStatus' in params ? params.MachineStatus : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.CheckPlatform = 'CheckPlatform' in params ? params.CheckPlatform : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.StrFileAccessTime = 'StrFileAccessTime' in params ? params.StrFileAccessTime : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Log-in location information
 * @class
 */
class Place extends  AbstractModel {
    constructor(){
        super();

        /**
         * City ID
         * @type {number || null}
         */
        this.CityId = null;

        /**
         * Province ID
         * @type {number || null}
         */
        this.ProvinceId = null;

        /**
         * Country ID. Currently, only 1 is supported, indicating China.
         * @type {number || null}
         */
        this.CountryId = null;

        /**
         * Location name
         * @type {string || null}
         */
        this.Location = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CityId = 'CityId' in params ? params.CityId : null;
        this.ProvinceId = 'ProvinceId' in params ? params.ProvinceId : null;
        this.CountryId = 'CountryId' in params ? params.CountryId : null;
        this.Location = 'Location' in params ? params.Location : null;

    }
}

/**
 * DescribeSecurityProtectionStat request structure.
 * @class
 */
class DescribeSecurityProtectionStatRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * Log details
 * @class
 */
class LogInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * JSON serialized string of the log content
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Log file name
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Log source IP address
         * @type {string || null}
         */
        this.Source = null;

        /**
         * Log time, in milliseconds
         * @type {number || null}
         */
        this.TimeStamp = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Content = 'Content' in params ? params.Content : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.TimeStamp = 'TimeStamp' in params ? params.TimeStamp : null;

    }
}

/**
 * DescribeHostInfo response structure.
 * @class
 */
class DescribeHostInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host and tag information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<HostTagInfo> || null}
         */
        this.HostInfoList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.HostInfoList) {
            this.HostInfoList = new Array();
            for (let z in params.HostInfoList) {
                let obj = new HostTagInfo();
                obj.deserialize(params.HostInfoList[z]);
                this.HostInfoList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWebHookPolicyStatus response structure.
 * @class
 */
class ModifyWebHookPolicyStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportRiskDnsPolicyList response structure.
 * @class
 */
class ExportRiskDnsPolicyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous download task ID. It is used together with the ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBruteAttackRules request structure.
 * @class
 */
class ModifyBruteAttackRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule of determining brute force cracking
         * @type {Array.<BruteAttackRule> || null}
         */
        this.Rules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Rules) {
            this.Rules = new Array();
            for (let z in params.Rules) {
                let obj = new BruteAttackRule();
                obj.deserialize(params.Rules[z]);
                this.Rules.push(obj);
            }
        }

    }
}

/**
 * DescribeScreenDefenseTrends response structure.
 * @class
 */
class DescribeScreenDefenseTrendsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trend charts of detailed statistics data
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenTrendsChart> || null}
         */
        this.TrendsChart = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TrendsChart) {
            this.TrendsChart = new Array();
            for (let z in params.TrendsChart) {
                let obj = new ScreenTrendsChart();
                obj.deserialize(params.TrendsChart[z]);
                this.TrendsChart.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Index key-value information
 * @class
 */
class KeyValueArrayInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Field requiring Key-Value or Meta Field Index configuration
         * @type {string || null}
         */
        this.Key = null;

        /**
         * Field index description
         * @type {ValueInfo || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Key = 'Key' in params ? params.Key : null;

        if (params.Value) {
            let obj = new ValueInfo();
            obj.deserialize(params.Value)
            this.Value = obj;
        }

    }
}

/**
 * SyncBaselineDetectSummary request structure.
 * @class
 */
class SyncBaselineDetectSummaryRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * IDs for calculating the progress of ongoing check tasks. Generally, this parameter is not required.
         * @type {Array.<number> || null}
         */
        this.TaskIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;

    }
}

/**
 * DescribeExpertServiceOrderList response structure.
 * @class
 */
class DescribeExpertServiceOrderListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Order list
         * @type {Array.<ExpertServiceOrderInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ExpertServiceOrderInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteReverseShellRules response structure.
 * @class
 */
class DeleteReverseShellRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetPlanTaskList request structure.
 * @class
 */
class DescribeAssetPlanTaskListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>User- string - required: no - user</li>
<li>Status- int - required: no - default enabling status: 0: disabled; 1: enabled </li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribePrivilegeEventInfo response structure.
 * @class
 */
class DescribePrivilegeEventInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Local privilege escalation details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {PrivilegeEventInfo || null}
         */
        this.PrivilegeEventInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.PrivilegeEventInfo) {
            let obj = new PrivilegeEventInfo();
            obj.deserialize(params.PrivilegeEventInfo)
            this.PrivilegeEventInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineLicenseDetail request structure.
 * @class
 */
class DescribeMachineLicenseDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * Machine snapshot information
 * @class
 */
class VulFixStatusSnapshotInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * cvm id
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Snapshot name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SnapshotName = null;

        /**
         * Snapshot creation time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Snapshot ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SnapshotId = null;

        /**
         * Unique record ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Snapshot status. 0: initial; 1: created successfully; 2: creation failed.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Snapshot creation failure reason
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FailReason = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.SnapshotName = 'SnapshotName' in params ? params.SnapshotName : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.SnapshotId = 'SnapshotId' in params ? params.SnapshotId : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FailReason = 'FailReason' in params ? params.FailReason : null;

    }
}

/**
 * Platform tag
 * @class
 */
class Tags extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag key
         * @type {string || null}
         */
        this.TagKey = null;

        /**
         * Tag value
         * @type {string || null}
         */
        this.TagValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TagKey = 'TagKey' in params ? params.TagKey : null;
        this.TagValue = 'TagValue' in params ? params.TagValue : null;

    }
}

/**
 * DescribeBaselineItemList response structure.
 * @class
 */
class DescribeBaselineItemListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * None
         * @type {Array.<BaselineItem> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BaselineItem();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachinesSimple request structure.
 * @class
 */
class DescribeMachinesSimpleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type of the machine's zone
CVM: Cloud Virtual Machine
BM: BM
ECM: Edge Computing Machine
LH: Lighthouse
Other: Hybrid Cloud Zone
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Machine region. For example, ap-guangzhou and ap-shanghai.
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria
<li>Keywords - String - required: no - keywords for querying </li>
<li>Version - String required: no - current protection edition ( PRO_VERSION: Pro Edition | BASIC_VERSION: Basic Edition | Flagship: Ultimate Edition | ProtectedMachines: Pro + Ultimate Editions | UnFlagship: Non-Ultimate Edition | PRO_POST_PAY: Pro Edition in pay-as-you-go mode | PRO_PRE_PAY: Pro Edition in monthly subscription mode)</li>
<li>TagId - String - required: no - tag ID </li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * ID list of businesses to which machines belong
         * @type {Array.<number> || null}
         */
        this.ProjectIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.ProjectIds = 'ProjectIds' in params ? params.ProjectIds : null;

    }
}

/**
 * StopBaselineDetect response structure.
 * @class
 */
class StopBaselineDetectResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline weak password
 * @class
 */
class BaselineWeakPassword extends  AbstractModel {
    constructor(){
        super();

        /**
         * Password ID
         * @type {number || null}
         */
        this.PasswordId = null;

        /**
         * Password
         * @type {string || null}
         */
        this.WeakPassword = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PasswordId = 'PasswordId' in params ? params.PasswordId : null;
        this.WeakPassword = 'WeakPassword' in params ? params.WeakPassword : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

    }
}

/**
 * DescribeBanRegions request structure.
 * @class
 */
class DescribeBanRegionsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking mode. STANDARD_MODE: standard mode; DEEP_MODE: deep mode.
         * @type {string || null}
         */
        this.Mode = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;

    }
}

/**
 * DescribeBashPolicies response structure.
 * @class
 */
class DescribeBashPoliciesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List content
         * @type {Array.<BashPolicy> || null}
         */
        this.List = null;

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BashPolicy();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of security event statistics
 * @class
 */
class SecurityEventInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of security events
         * @type {number || null}
         */
        this.EventCnt = null;

        /**
         * Number of affected machines
         * @type {number || null}
         */
        this.UuidCnt = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventCnt = 'EventCnt' in params ? params.EventCnt : null;
        this.UuidCnt = 'UuidCnt' in params ? params.UuidCnt : null;

    }
}

/**
 * Machine snapshot information
 * @class
 */
class MachineSnapshotInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * cvm id
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Snapshot name
         * @type {string || null}
         */
        this.SnapshotName = null;

        /**
         * Snapshot creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Disk ID
         * @type {string || null}
         */
        this.DiskId = null;

        /**
         * Instance ID
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * Region ID
         * @type {number || null}
         */
        this.RegionId = null;

        /**
         * Snapshot ID
         * @type {string || null}
         */
        this.SnapshotId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.SnapshotName = 'SnapshotName' in params ? params.SnapshotName : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.DiskId = 'DiskId' in params ? params.DiskId : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.RegionId = 'RegionId' in params ? params.RegionId : null;
        this.SnapshotId = 'SnapshotId' in params ? params.SnapshotId : null;

    }
}

/**
 * ExportFileTamperEvents request structure.
 * @class
 */
class ExportFileTamperEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>Status - String - required: no - processing status: 0: pending; 1: added to allowlist; 2: deleted; 3: ignored</li><li>ModifyTime - string - required: no - last occurrence time</li>
<li>Uuid - String - required: no - host UUID for querying</li>
<li>RuleCategory - string - required: no - rule category: 0: system rule; 1: custom rule</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Fields to be exported
         * @type {Array.<string> || null}
         */
        this.Fileds = null;

        /**
         * Fields to be exported
         * @type {string || null}
         */
        this.Fields = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Fileds = 'Fileds' in params ? params.Fileds : null;
        this.Fields = 'Fields' in params ? params.Fields : null;

    }
}

/**
 * DeleteLicenseRecordAll response structure.
 * @class
 */
class DeleteLicenseRecordAllResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBanMode request structure.
 * @class
 */
class ModifyBanModeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Blocking mode. STANDARD_MODE: standard mode; DEEP_MODE: deep mode.
         * @type {string || null}
         */
        this.Mode = null;

        /**
         * Blocking time. This parameter is valid in standard blocking mode.
         * @type {number || null}
         */
        this.Ttl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.Ttl = 'Ttl' in params ? params.Ttl : null;

    }
}

/**
 * DescribeBaselineDefaultStrategyList response structure.
 * @class
 */
class DescribeBaselineDefaultStrategyListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of the basic default policy information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<DefaultStrategyInfo> || null}
         */
        this.StrategyList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.StrategyList) {
            this.StrategyList = new Array();
            for (let z in params.StrategyList) {
                let obj = new DefaultStrategyInfo();
                obj.deserialize(params.StrategyList[z]);
                this.StrategyList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of displayed blocking allowlist information, including the machine information
 * @class
 */
class BanWhiteListDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Allowlist ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Allowlist alias
         * @type {string || null}
         */
        this.Remark = null;

        /**
         * Blocking source IP address
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * Allowlist modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Allowlist creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Whether the allowlist takes effect globally
         * @type {boolean || null}
         */
        this.IsGlobal = null;

        /**
         * Machine UUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * CWPP program UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Machine IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Machine name
         * @type {string || null}
         */
        this.MachineName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Remark = 'Remark' in params ? params.Remark : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;

    }
}

/**
 * DeleteScanTask response structure.
 * @class
 */
class DeleteScanTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenGeneralStat response structure.
 * @class
 */
class DescribeScreenGeneralStatResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Value of name: online, shutdown/offline, not installed
Value: indicates the corresponding quantity
         * @type {Array.<ScreenNameValue> || null}
         */
        this.Machines = null;

        /**
         * Value of name: Ultimate Edition, Pro Edition, Basic Edition
Value: indicates the corresponding number
         * @type {Array.<ScreenNameValue> || null}
         */
        this.Protection = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new ScreenNameValue();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }

        if (params.Protection) {
            this.Protection = new Array();
            for (let z in params.Protection) {
                let obj = new ScreenNameValue();
                obj.deserialize(params.Protection[z]);
                this.Protection.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * EditBashRules request structure.
 * @class
 */
class EditBashRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID (leave this parameter blank for addition)
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Client ID array
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

        /**
         * Host IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Rule name, which cannot be modified during editing
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Risk level (0: none; 1: high-risk; 2: medium-risk; 3: low-risk)
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Regular expression, which cannot be modified during editing. Apply the QueryEscape function to the content and then perform Base64 encoding.
         * @type {string || null}
         */
        this.Rule = null;

        /**
         * Whether the rule is global. 1: global; 0: not global (default value).
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * 0: blocklist; 1: allowlist
         * @type {number || null}
         */
        this.White = null;

        /**
         * When it is added to the allowlist, the event ID needs to be passed in.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Whether to add existing events to the allowlist. 0: no; 1: yes.
         * @type {number || null}
         */
        this.DealOldEvents = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Rule = 'Rule' in params ? params.Rule : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.White = 'White' in params ? params.White : null;
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.DealOldEvents = 'DealOldEvents' in params ? params.DealOldEvents : null;

    }
}

/**
 * Anti-ransomware rollback task
 * @class
 */
class RansomDefenseRollbackTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Rollback Task Status: 0 - In Progress, 1 - Succeeded, 2 - Failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Hard drive ID list, separated by semicolons (;)
         * @type {string || null}
         */
        this.Disks = null;

        /**
         * Operation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Snapshot time
         * @type {string || null}
         */
        this.BackupTime = null;

        /**
         * Status!=0 indicates the completion time.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Availability zone information
         * @type {RegionInfo || null}
         */
        this.RegionInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Disks = 'Disks' in params ? params.Disks : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.BackupTime = 'BackupTime' in params ? params.BackupTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;

        if (params.RegionInfo) {
            let obj = new RegionInfo();
            obj.deserialize(params.RegionInfo)
            this.RegionInfo = obj;
        }

    }
}

/**
 * DescribeMachineRegions response structure.
 * @class
 */
class DescribeMachineRegionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of Cloud Virtual Machine regions
         * @type {Array.<RegionInfo> || null}
         */
        this.CVM = null;

        /**
         * List of BM machine regions
         * @type {Array.<RegionInfo> || null}
         */
        this.BM = null;

        /**
         * List of Lighthouse regions
         * @type {Array.<RegionInfo> || null}
         */
        this.LH = null;

        /**
         * List of Edge Computing Machine regions
         * @type {Array.<RegionInfo> || null}
         */
        this.ECM = null;

        /**
         * List of Hybrid Cloud regions
         * @type {Array.<RegionInfo> || null}
         */
        this.Other = null;

        /**
         * List of all regions (including above regions)
         * @type {Array.<RegionInfo> || null}
         */
        this.ALL = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.CVM) {
            this.CVM = new Array();
            for (let z in params.CVM) {
                let obj = new RegionInfo();
                obj.deserialize(params.CVM[z]);
                this.CVM.push(obj);
            }
        }

        if (params.BM) {
            this.BM = new Array();
            for (let z in params.BM) {
                let obj = new RegionInfo();
                obj.deserialize(params.BM[z]);
                this.BM.push(obj);
            }
        }

        if (params.LH) {
            this.LH = new Array();
            for (let z in params.LH) {
                let obj = new RegionInfo();
                obj.deserialize(params.LH[z]);
                this.LH.push(obj);
            }
        }

        if (params.ECM) {
            this.ECM = new Array();
            for (let z in params.ECM) {
                let obj = new RegionInfo();
                obj.deserialize(params.ECM[z]);
                this.ECM.push(obj);
            }
        }

        if (params.Other) {
            this.Other = new Array();
            for (let z in params.Other) {
                let obj = new RegionInfo();
                obj.deserialize(params.Other[z]);
                this.Other.push(obj);
            }
        }

        if (params.ALL) {
            this.ALL = new Array();
            for (let z in params.ALL) {
                let obj = new RegionInfo();
                obj.deserialize(params.ALL[z]);
                this.ALL.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportVulDefenceList request structure.
 * @class
 */
class ExportVulDefenceListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Keywords: vulnerability name or CVE ID for fuzzy matching, and level for precise matching
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Fields to be exported. All fields are to be exported by default.
         * @type {Array.<string> || null}
         */
        this.Where = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Where = 'Where' in params ? params.Where : null;

    }
}

/**
 * List of security manager information
 * @class
 */
class SecurityButlerInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Order ID
         * @type {number || null}
         */
        this.OrderId = null;

        /**
         * cvm id
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Service status. 0: in service; 1: expired; 2: terminated.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Service start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Service end time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.HostName = null;

        /**
         * Host IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Number of host risks
         * @type {number || null}
         */
        this.RiskCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.OrderId = 'OrderId' in params ? params.OrderId : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.HostName = 'HostName' in params ? params.HostName : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.RiskCount = 'RiskCount' in params ? params.RiskCount : null;

    }
}

/**
 * Usage information on associated policies of the alarm recipient
 * @class
 */
class WebHookReceiverUsage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Recipient ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ReceiverId = null;

        /**
         * Recipient name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ReceiverName = null;

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PolicyName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReceiverId = 'ReceiverId' in params ? params.ReceiverId : null;
        this.ReceiverName = 'ReceiverName' in params ? params.ReceiverName : null;
        this.PolicyName = 'PolicyName' in params ? params.PolicyName : null;

    }
}

/**
 * DestroyOrder request structure.
 * @class
 */
class DestroyOrderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Authorization type. 0: Pro Edition - pay-as-you-go; 1: Pro Edition - monthly subscription; 2: Ultimate Edition - monthly subscription.
         * @type {number || null}
         */
        this.LicenseType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;

    }
}

/**
 * List of the information on the resource management web application
 * @class
 */
class AssetWebAppBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host private IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host public IP address
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating system information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Application name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Root path
         * @type {string || null}
         */
        this.RootPath = null;

        /**
         * Service type
         * @type {string || null}
         */
        this.ServiceType = null;

        /**
         * Site domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Virtual path
         * @type {string || null}
         */
        this.VirtualPath = null;

        /**
         * Number of plugins
         * @type {number || null}
         */
        this.PluginCount = null;

        /**
         * Application ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Application description
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether it is newly added [0: no | 1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.RootPath = 'RootPath' in params ? params.RootPath : null;
        this.ServiceType = 'ServiceType' in params ? params.ServiceType : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.VirtualPath = 'VirtualPath' in params ? params.VirtualPath : null;
        this.PluginCount = 'PluginCount' in params ? params.PluginCount : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeRiskDnsInfo request structure.
 * @class
 */
class DescribeRiskDnsInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Malicious request - event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * Parameters of the asset management kernel module
 * @class
 */
class AssetCoreModuleParam extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Data
         * @type {string || null}
         */
        this.Data = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Data = 'Data' in params ? params.Data : null;

    }
}

/**
 * DescribeMachineLicenseDetail response structure.
 * @class
 */
class DescribeMachineLicenseDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineLicenseDetail> || null}
         */
        this.MachineLicense = null;

        /**
         * Total number
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MachineLicense) {
            this.MachineLicense = new Array();
            for (let z in params.MachineLicense) {
                let obj = new MachineLicenseDetail();
                obj.deserialize(params.MachineLicense[z]);
                this.MachineLicense.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeHostInfo request structure.
 * @class
 */
class DescribeHostInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID array
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * UUIDs for querying. Leave this parameter blank if QUUIDs are used for querying.
         * @type {Array.<string> || null}
         */
        this.Uuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.Uuids = 'Uuids' in params ? params.Uuids : null;

    }
}

/**
 * DeleteBashEvents request structure.
 * @class
 */
class DeleteBashEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID array. Maximum number of IDs: 100.
         * @type {Array.<number> || null}
         */
        this.Ids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;

    }
}

/**
 * DescribeLicenseWhiteConfig request structure.
 * @class
 */
class DescribeLicenseWhiteConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name. For example, cwp.
         * @type {string || null}
         */
        this.RuleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;

    }
}

/**
 * Statistics data of top network attacks
 * @class
 */
class TopInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Top statistical data, such as IP, and vulnerability name
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Top statistical count
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Value = 'Value' in params ? params.Value : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * List of asset management JAR packages
 * @class
 */
class AssetJarBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type. 1: application; 2: system class library; 3: web service built-in library; 8: others.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Whether it is executable. 0: unknown; 1: yes; 2: no.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Version
         * @type {string || null}
         */
        this.Version = null;

        /**
         * Path
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Server IP address
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Operating system
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * JAR package ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * JAR package Md5
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether it is newly added [0: no | 1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Server public IP
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Additional information

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Version = 'Version' in params ? params.Version : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeFileTamperEventRuleInfo request structure.
 * @class
 */
class DescribeFileTamperEventRuleInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * Number of returned UUIDs per page
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * Vulnerability list on the vulnerability management page of CWPP
 * @class
 */
class VulInfoList extends  AbstractModel {
    constructor(){
        super();

        /**
         * IDs of events corresponding to a vulnerability, separated by commas (,)
         * @type {string || null}
         */
        this.Ids = null;

        /**
         * Vulnerability name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 0: pending; 1: ignored; 3: fixed; 5: detecting; 6: fixing; 8: fixing failed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Vulnerability disclosure time
         * @type {string || null}
         */
        this.PublishTime = null;

        /**
         * Last detection time
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Number of affected hosts
         * @type {number || null}
         */
        this.HostCount = null;

        /**
         * Vulnerability level. 1: low-risk; 2: medium-risk; 3: high-risk; 4: critical.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * This field has been deprecated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.From = null;

        /**
         * Description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Descript = null;

        /**
         * This field has been deprecated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PublishTimeWisteria = null;

        /**
         * This field has been deprecated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.NameWisteria = null;

        /**
         * This field has been deprecated.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DescriptWisteria = null;

        /**
         * Event status after aggregation
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StatusStr = null;

        /**
         * CVE ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CveId = null;

        /**
         * CVSS score
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.CvssScore = null;

        /**
         * Vulnerability tags, separated by multiple commas
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Labels = null;

        /**
         * Whether automatic fixing is supported and hosts that support automatic fixing are included. 0: no; 1: yes.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FixSwitch = null;

        /**
         * ID of the last scan task
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Whether defense is supported. 0: not supported; 1: supported.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsSupportDefense = null;

        /**
         * Number of attacks defended
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DefenseAttackCount = null;

        /**
         * First occurrence time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstAppearTime = null;

        /**
         * Vulnerability category. 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Attack intensity
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AttackLevel = null;

        /**
         * Whether a restart is required after the vulnerability is fixed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.FixNoNeedRestart = null;

        /**
         * Detection method. 0: version comparison; 1: POC verification.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Method = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ids = 'Ids' in params ? params.Ids : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.PublishTime = 'PublishTime' in params ? params.PublishTime : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.From = 'From' in params ? params.From : null;
        this.Descript = 'Descript' in params ? params.Descript : null;
        this.PublishTimeWisteria = 'PublishTimeWisteria' in params ? params.PublishTimeWisteria : null;
        this.NameWisteria = 'NameWisteria' in params ? params.NameWisteria : null;
        this.DescriptWisteria = 'DescriptWisteria' in params ? params.DescriptWisteria : null;
        this.StatusStr = 'StatusStr' in params ? params.StatusStr : null;
        this.CveId = 'CveId' in params ? params.CveId : null;
        this.CvssScore = 'CvssScore' in params ? params.CvssScore : null;
        this.Labels = 'Labels' in params ? params.Labels : null;
        this.FixSwitch = 'FixSwitch' in params ? params.FixSwitch : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.IsSupportDefense = 'IsSupportDefense' in params ? params.IsSupportDefense : null;
        this.DefenseAttackCount = 'DefenseAttackCount' in params ? params.DefenseAttackCount : null;
        this.FirstAppearTime = 'FirstAppearTime' in params ? params.FirstAppearTime : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.AttackLevel = 'AttackLevel' in params ? params.AttackLevel : null;
        this.FixNoNeedRestart = 'FixNoNeedRestart' in params ? params.FixNoNeedRestart : null;
        this.Method = 'Method' in params ? params.Method : null;

    }
}

/**
 * ExportIgnoreRuleEffectHostList request structure.
 * @class
 */
class ExportIgnoreRuleEffectHostListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection item ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Filtering criteria
<li>AliasName - String - host alias</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleId = 'RuleId' in params ? params.RuleId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * Java Memory Trojan Plugin Configuration
 * @class
 */
class JavaMemShellPluginSetting extends  AbstractModel {
    constructor(){
        super();

        /**
         * Container QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server name
         * @type {string || null}
         */
        this.Alias = null;

        /**
         * Server IP address
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Javashell Plugin Switch. 0: Off; 1: On
         * @type {number || null}
         */
        this.JavaShellStatus = null;

        /**
         * Plugin Exception Status. 0: Normal; 1: Abnormal
         * @type {number || null}
         */
        this.Exception = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Modification time
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Server UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host Additional Information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Alias = 'Alias' in params ? params.Alias : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.JavaShellStatus = 'JavaShellStatus' in params ? params.JavaShellStatus : null;
        this.Exception = 'Exception' in params ? params.Exception : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * Query Details of Host-related Core File Monitoring Rules
 * @class
 */
class MachineFileTamperRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Rule Type. 0: System Rule; 1: User Rule
         * @type {number || null}
         */
        this.RuleCategory = null;

        /**
         * Rule
         * @type {Array.<FileTamperRule> || null}
         */
        this.Rule = null;

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.RuleCategory = 'RuleCategory' in params ? params.RuleCategory : null;

        if (params.Rule) {
            this.Rule = new Array();
            for (let z in params.Rule) {
                let obj = new FileTamperRule();
                obj.deserialize(params.Rule[z]);
                this.Rule.push(obj);
            }
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ModifyLicenseOrder response structure.
 * @class
 */
class ModifyLicenseOrderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Order ID
         * @type {Array.<string> || null}
         */
        this.DealNames = null;

        /**
         * Resource ID
         * @type {Array.<string> || null}
         */
        this.ResourceIds = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DealNames = 'DealNames' in params ? params.DealNames : null;
        this.ResourceIds = 'ResourceIds' in params ? params.ResourceIds : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackEventInfo response structure.
 * @class
 */
class DescribeAttackEventInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Network attack event details
         * @type {NetAttackEventInfo || null}
         */
        this.NetAttackEventInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.NetAttackEventInfo) {
            let obj = new NetAttackEventInfo();
            obj.deserialize(params.NetAttackEventInfo)
            this.NetAttackEventInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineSnapshot response structure.
 * @class
 */
class DescribeMachineSnapshotResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of host snapshot
         * @type {Array.<MachineSnapshotInfo> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Whether snapshots created in the last 24 hours exist
         * @type {boolean || null}
         */
        this.SnapshotCheck = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new MachineSnapshotInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.SnapshotCheck = 'SnapshotCheck' in params ? params.SnapshotCheck : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulHostCountScanTime response structure.
 * @class
 */
class DescribeVulHostCountScanTimeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of vulnerabilities
         * @type {number || null}
         */
        this.TotalVulCount = null;

        /**
         * Number of hosts affected by vulnerabilities
         * @type {number || null}
         */
        this.VulHostCount = null;

        /**
         * Scan time
         * @type {string || null}
         */
        this.ScanTime = null;

        /**
         * Whether the detection is carried out for the first time
         * @type {boolean || null}
         */
        this.IfFirstScan = null;

        /**
         * ID of the ongoing task. The value is 0 if no such task exists.
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * Last vulnerability fixing time
         * @type {string || null}
         */
        this.LastFixTime = null;

        /**
         * Whether vulnerabilities supporting automatic fixing exist
         * @type {boolean || null}
         */
        this.hadAutoFixVul = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalVulCount = 'TotalVulCount' in params ? params.TotalVulCount : null;
        this.VulHostCount = 'VulHostCount' in params ? params.VulHostCount : null;
        this.ScanTime = 'ScanTime' in params ? params.ScanTime : null;
        this.IfFirstScan = 'IfFirstScan' in params ? params.IfFirstScan : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.LastFixTime = 'LastFixTime' in params ? params.LastFixTime : null;
        this.hadAutoFixVul = 'hadAutoFixVul' in params ? params.hadAutoFixVul : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of alarm settings
 * @class
 */
class WarningInfoObj extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event alarm type. 1: offline; 2: Trojan; 3: abnormal log-in; 4: brute force cracking; 5: vulnerability (including types of values 9, 10, 11, and 12); 6: high-risk command; 7: reverse shell; 8: local privilege escalation; 9: application vulnerability; 10: web CMS vulnerability; 11: emergency vulnerability; 12: security baseline; 13: tampering prevention; 14: malicious request; 15: network attack; 16: Windows system vulnerability; 17: Linux software vulnerability; 18: core file monitoring; 19: client uninstallation; 20: client offline.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * 1: disable alarm; 0: enable alarm
         * @type {number || null}
         */
        this.DisablePhoneWarning = null;

        /**
         * Start time. Format: HH:mm.
         * @type {string || null}
         */
        this.BeginTime = null;

        /**
         * End time. Format: HH:mm.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Time zone information
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * Vulnerability level control bit (corresponding to the decimal storage in the database)
         * @type {number || null}
         */
        this.ControlBit = null;

        /**
         * Vulnerability level control bits in binary. Each bit indicates the enabling status of the corresponding vulnerability level on the page: low, medium, and high (0: disabled; 1: enabled). For example, 101 indicates that both low and high levels are enabled.
         * @type {string || null}
         */
        this.ControlBits = null;

        /**
         * Alarm Host Range Type. 0: All Hosts; 1: By Project; 2: By Tencent Cloud Tag; 3: By Host Security Tag; 4: Custom Hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostRange = null;

        /**
         * Configured Number of Hosts in the Range of Alarm, used by the frontend to decide when to display prompt information.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.DisablePhoneWarning = 'DisablePhoneWarning' in params ? params.DisablePhoneWarning : null;
        this.BeginTime = 'BeginTime' in params ? params.BeginTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.ControlBit = 'ControlBit' in params ? params.ControlBit : null;
        this.ControlBits = 'ControlBits' in params ? params.ControlBits : null;
        this.HostRange = 'HostRange' in params ? params.HostRange : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * Enterprise WeChat Robot Rule Summary
 * @class
 */
class WebHookRuleSummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Robot Address
         * @type {string || null}
         */
        this.HookAddr = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.RuleRemark = null;

        /**
         * Event type
         * @type {Array.<WebHookEventKv> || null}
         */
        this.RuleItems = null;

        /**
         * Host range
         * @type {Array.<WebHookHostLabel> || null}
         */
        this.HostLabels = null;

        /**
         * Enable/Disable [1-Disable, 0-Enable]
         * @type {number || null}
         */
        this.IsDisabled = null;

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update time
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.HostCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.HookAddr = 'HookAddr' in params ? params.HookAddr : null;
        this.RuleRemark = 'RuleRemark' in params ? params.RuleRemark : null;

        if (params.RuleItems) {
            this.RuleItems = new Array();
            for (let z in params.RuleItems) {
                let obj = new WebHookEventKv();
                obj.deserialize(params.RuleItems[z]);
                this.RuleItems.push(obj);
            }
        }

        if (params.HostLabels) {
            this.HostLabels = new Array();
            for (let z in params.HostLabels) {
                let obj = new WebHookHostLabel();
                obj.deserialize(params.HostLabels[z]);
                this.HostLabels.push(obj);
            }
        }
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.HostCount = 'HostCount' in params ? params.HostCount : null;

    }
}

/**
 * DescribeAssetWebLocationCount request structure.
 * @class
 */
class DescribeAssetWebLocationCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria: return a list of all web sites whose names contain Name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeAssetCoreModuleList request structure.
 * @class
 */
class DescribeAssetCoreModuleListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name - string - required: no - package name</li>
<li>User - string - required: no - user</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method [Size|FirstTime|ProcessCount|ModuleCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Query vulnerability details by cve_id
 * @class
 */
class VulInfoByCveId extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability ID
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Repair Support Status. 0-Neither Windows nor Linux supports for repair; 1-Both Windows and Linux support for repair; 2-Only Linux supports for repair; 3-Only Windows supports for repair.
         * @type {number || null}
         */
        this.FixSwitch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.FixSwitch = 'FixSwitch' in params ? params.FixSwitch : null;

    }
}

/**
 * DeleteLogExport response structure.
 * @class
 */
class DeleteLogExportResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * TestWebHookRule response structure.
 * @class
 */
class TestWebHookRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteBanWhiteList response structure.
 * @class
 */
class DeleteBanWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineStrategyDetail response structure.
 * @class
 */
class DescribeBaselineStrategyDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy scan pass rate
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PassRate = null;

        /**
         * Policy name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * policy scan cycle (days)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ScanCycle = null;

        /**
         * Regular scan time. The scan task is triggered at this time.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ScanAt = null;

        /**
         * Whether all hosts are scanned. 1: yes; 0: no. If the value is 1, all Pro Edition hosts are scanned.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * Machine type:
cvm: Tencent Cloud Virtual Machine
bm: BM
ecm: Edge Computing Machine
lh: Lighthouse
other: Hybrid Cloud Machine
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Host region
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * IDs of all user hosts involved in this policy
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

        /**
         * IDs of all user baselines involved in this policy
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.CategoryIds = null;

        /**
         * 1: scanned; 0: not scanned.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IfScanned = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PassRate = 'PassRate' in params ? params.PassRate : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.ScanCycle = 'ScanCycle' in params ? params.ScanCycle : null;
        this.ScanAt = 'ScanAt' in params ? params.ScanAt : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;
        this.CategoryIds = 'CategoryIds' in params ? params.CategoryIds : null;
        this.IfScanned = 'IfScanned' in params ? params.IfScanned : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineList request structure.
 * @class
 */
class DescribeBaselineListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Pagination parameter, indicating the number of entries per page. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Pagination parameter
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria
<li>StrategyId - Uint64 - baseline policy ID</li>
<li>Status - Uint64 - processing status: 1: passed; 0: failed</li><li>Level - Uint64[] - risk level: 1: low; 2: medium; 3: high; 4: critical</li><li>BaselineName - String - baseline name</li>
<li>Quuid - String - host QUUID</li>
<li>Uuid - String - host UUID</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * DescribePublicProxyInstallCommand request structure.
 * @class
 */
class DescribePublicProxyInstallCommandRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of Nginx host IP addresses, separated by commas
         * @type {string || null}
         */
        this.Ip = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Ip = 'Ip' in params ? params.Ip : null;

    }
}

/**
 * ExportJavaMemShells response structure.
 * @class
 */
class ExportJavaMemShellsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID, which is used to obtain the download URL (DownloadUrl) using the <a href="https://intl.cloud.tencent.com/document/product/296/52508?from_cn_redirect=1" target="_blank">asynchronous task export</a> API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeProductStatus request structure.
 * @class
 */
class DescribeProductStatusRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeRiskProcessEvents response structure.
 * @class
 */
class DescribeRiskProcessEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of exceptional processes
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<RiskProcessEvent> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RiskProcessEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScreenHostInvasion response structure.
 * @class
 */
class DescribeScreenHostInvasionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of network attack event
         * @type {Array.<ScreenDefendAttackLog> || null}
         */
        this.DefendAttackLog = null;

        /**
         * List of intrusion detection event
         * @type {Array.<ScreenInvasion> || null}
         */
        this.InvasionEvents = null;

        /**
         * List of vulnerability event
         * @type {Array.<ScreenVulInfo> || null}
         */
        this.Vul = null;

        /**
         * List of baseline event
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ScreenBaselineInfo> || null}
         */
        this.Baseline = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.DefendAttackLog) {
            this.DefendAttackLog = new Array();
            for (let z in params.DefendAttackLog) {
                let obj = new ScreenDefendAttackLog();
                obj.deserialize(params.DefendAttackLog[z]);
                this.DefendAttackLog.push(obj);
            }
        }

        if (params.InvasionEvents) {
            this.InvasionEvents = new Array();
            for (let z in params.InvasionEvents) {
                let obj = new ScreenInvasion();
                obj.deserialize(params.InvasionEvents[z]);
                this.InvasionEvents.push(obj);
            }
        }

        if (params.Vul) {
            this.Vul = new Array();
            for (let z in params.Vul) {
                let obj = new ScreenVulInfo();
                obj.deserialize(params.Vul[z]);
                this.Vul.push(obj);
            }
        }

        if (params.Baseline) {
            this.Baseline = new Array();
            for (let z in params.Baseline) {
                let obj = new ScreenBaselineInfo();
                obj.deserialize(params.Baseline[z]);
                this.Baseline.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBaselineFixList response structure.
 * @class
 */
class ExportBaselineFixListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportBashEventsNew response structure.
 * @class
 */
class ExportBashEventsNewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been deprecated.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMachineDefenseCnt request structure.
 * @class
 */
class DescribeMachineDefenseCntRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>Uuids - String - required: no - host UUID</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ModifyFileTamperRuleStatus response structure.
 * @class
 */
class ModifyFileTamperRuleStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBaselineTop request structure.
 * @class
 */
class DescribeBaselineTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Dynamic top value
         * @type {number || null}
         */
        this.Top = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Top = 'Top' in params ? params.Top : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;

    }
}

/**
 * DescribeAssetAppProcessList request structure.
 * @class
 */
class DescribeAssetAppProcessListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * App name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * ScanTaskAgain request structure.
 * @class
 */
class ScanTaskAgainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Module type. Currently supported values: Malware: Trojan; Vul: vulnerability; Baseline: baseline.
         * @type {string || null}
         */
        this.ModuleType = null;

        /**
         * Task ID
         * @type {number || null}
         */
        this.TaskId = null;

        /**
         * String array of host QUUIDs. This parameter is effective for selected servers.
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Scan timeout
         * @type {number || null}
         */
        this.TimeoutPeriod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModuleType = 'ModuleType' in params ? params.ModuleType : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.TimeoutPeriod = 'TimeoutPeriod' in params ? params.TimeoutPeriod : null;

    }
}

/**
 * ExportAssetWebAppList request structure.
 * @class
 */
class ExportAssetWebAppListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>Name - String - required: no - application name</li>
<li>Domain - String - required: no - site domain name</li>
<li>Type - int - required: no - service type:
0: all
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:Jetty
8:IHS
9:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|PluginCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeRecommendedProtectCpu response structure.
 * @class
 */
class DescribeRecommendedProtectCpuResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLicenseBindList request structure.
 * @class
 */
class DescribeLicenseBindListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Authorization ID
         * @type {number || null}
         */
        this.LicenseId = null;

        /**
         * Authorization type
         * @type {number || null}
         */
        this.LicenseType = null;

        /**
         * Resource ID
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * <li>InstanceID, IP,

and MachineName for fuzzy search</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Limit number, 10 by default.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LicenseId = 'LicenseId' in params ? params.LicenseId : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * DeleteLicenseRecordAll request structure.
 * @class
 */
class DeleteLicenseRecordAllRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAccountStatistics request structure.
 * @class
 */
class DescribeAccountStatisticsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Filtering criteria
<li>Username - String - required: no - account username</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ExportBruteAttacks response structure.
 * @class
 */
class ExportBruteAttacksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * This parameter has been deprecated.
         * @type {string || null}
         */
        this.DownloadUrl = null;

        /**
         * Task ID, required for obtaining the DownloadURL at API Asynchronous Export Task ExportTasks
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DownloadUrl = 'DownloadUrl' in params ? params.DownloadUrl : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Java webshell event details
 * @class
 */
class JavaMemShellDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Container name
         * @type {string || null}
         */
        this.InstanceName = null;

        /**
         * Instance Status: RUNNING, STOPPED, SHUTDOWN...
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Private IP address
         * @type {string || null}
         */
        this.PrivateIp = null;

        /**
         * Public IP
         * @type {string || null}
         */
        this.PublicIp = null;

        /**
         * Memory Trojan Type. 0: Filter Type; 1: Listener Type; 2: Servlet Type; 3: Interceptors Type; 4: Agent Type; 5: Other
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Description
         * @type {string || null}
         */
        this.Description = null;

        /**
         * First detection time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last detection time
         * @type {string || null}
         */
        this.RecentFoundTime = null;

        /**
         * Processing Status. 0 - Pending; 1 - Allowlisted; 2 - Deleted; 3 - Ignored; 4 - Manually Processed
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Java Loader Class Name
         * @type {string || null}
         */
        this.ClassLoaderName = null;

        /**
         * Parent class name
         * @type {string || null}
         */
        this.SuperClassName = null;

        /**
         * Class file MD5
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Inherited API
         * @type {string || null}
         */
        this.Interfaces = null;

        /**
         * Annotation
         * @type {string || null}
         */
        this.Annotations = null;

        /**
         * Process ID
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Java Process Path
         * @type {string || null}
         */
        this.Exe = null;

        /**
         * Java process command line parameters
         * @type {string || null}
         */
        this.Args = null;

        /**
         * Class name
         * @type {string || null}
         */
        this.ClassName = null;

        /**
         * Java Memory Horse Binary Code (base64)
         * @type {string || null}
         */
        this.ClassContent = null;

        /**
         * Java Memory Trojan Decompilation Code
         * @type {string || null}
         */
        this.ClassContentPretty = null;

        /**
         * Event description
         * @type {string || null}
         */
        this.EventDescription = null;

        /**
         * Security advice
         * @type {string || null}
         */
        this.SecurityAdvice = null;

        /**
         * Additional host information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Instance status: RUNNING, STOPPED, SHUTDOWN...
         * @type {string || null}
         */
        this.MachineState = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InstanceName = 'InstanceName' in params ? params.InstanceName : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.PrivateIp = 'PrivateIp' in params ? params.PrivateIp : null;
        this.PublicIp = 'PublicIp' in params ? params.PublicIp : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.RecentFoundTime = 'RecentFoundTime' in params ? params.RecentFoundTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ClassLoaderName = 'ClassLoaderName' in params ? params.ClassLoaderName : null;
        this.SuperClassName = 'SuperClassName' in params ? params.SuperClassName : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Interfaces = 'Interfaces' in params ? params.Interfaces : null;
        this.Annotations = 'Annotations' in params ? params.Annotations : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.Exe = 'Exe' in params ? params.Exe : null;
        this.Args = 'Args' in params ? params.Args : null;
        this.ClassName = 'ClassName' in params ? params.ClassName : null;
        this.ClassContent = 'ClassContent' in params ? params.ClassContent : null;
        this.ClassContentPretty = 'ClassContentPretty' in params ? params.ClassContentPretty : null;
        this.EventDescription = 'EventDescription' in params ? params.EventDescription : null;
        this.SecurityAdvice = 'SecurityAdvice' in params ? params.SecurityAdvice : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.MachineState = 'MachineState' in params ? params.MachineState : null;

    }
}

/**
 * DescribeBaselineHostDetectList response structure.
 * @class
 */
class DescribeBaselineHostDetectListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * None
         * @type {Array.<BaselineHostDetect> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BaselineHostDetect();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Virtual directory of the asset management web site
 * @class
 */
class AssetWebLocationPath extends  AbstractModel {
    constructor(){
        super();

        /**
         * Virtual path
         * @type {string || null}
         */
        this.VirtualPath = null;

        /**
         * Physical path
         * @type {string || null}
         */
        this.RealPath = null;

        /**
         * File owner
         * @type {string || null}
         */
        this.User = null;

        /**
         * File group
         * @type {string || null}
         */
        this.Group = null;

        /**
         * File permission
         * @type {string || null}
         */
        this.Permission = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VirtualPath = 'VirtualPath' in params ? params.VirtualPath : null;
        this.RealPath = 'RealPath' in params ? params.RealPath : null;
        this.User = 'User' in params ? params.User : null;
        this.Group = 'Group' in params ? params.Group : null;
        this.Permission = 'Permission' in params ? params.Permission : null;

    }
}

/**
 * DescribeAssetProcessInfoList response structure.
 * @class
 */
class DescribeAssetProcessInfoListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetProcessBaseInfo> || null}
         */
        this.Process = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.Process) {
            this.Process = new Array();
            for (let z in params.Process) {
                let obj = new AssetProcessBaseInfo();
                obj.deserialize(params.Process[z]);
                this.Process.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ChangeStrategyEnableStatus request structure.
 * @class
 */
class ChangeStrategyEnableStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Enabling status
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Process statistics data
 * @class
 */
class ProcessStatistics extends  AbstractModel {
    constructor(){
        super();

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.MachineNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.MachineNum = 'MachineNum' in params ? params.MachineNum : null;

    }
}

/**
 * DescribeScanSchedule response structure.
 * @class
 */
class DescribeScanScheduleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Detection progress
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Schedule = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Schedule = 'Schedule' in params ? params.Schedule : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Baseline details
 * @class
 */
class BaselineDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Severity level
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Package name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PackageName = null;

        /**
         * Parent ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ParentId = null;

        /**
         * Baseline name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Description = 'Description' in params ? params.Description : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.PackageName = 'PackageName' in params ? params.PackageName : null;
        this.ParentId = 'ParentId' in params ? params.ParentId : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeVulDefenceOverview response structure.
 * @class
 */
class DescribeVulDefenceOverviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability defense overview information
         * @type {VulDefenceOverview || null}
         */
        this.Overview = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Overview) {
            let obj = new VulDefenceOverview();
            obj.deserialize(params.Overview)
            this.Overview = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebAppList request structure.
 * @class
 */
class DescribeAssetWebAppListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name - String - required: no - application name</li>
<li>Domain - String - required: no - site domain name</li>
<li>Type - int - required: no - service type:
0: all
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:Jetty
8:IHS
9:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|PluginCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * Expert service order information
 * @class
 */
class ExpertServiceOrderInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Order ID
         * @type {number || null}
         */
        this.OrderId = null;

        /**
         * Order type. 1: emergency; 2: Ultimate Edition important period guarantee; 3: security manager.
         * @type {number || null}
         */
        this.InquireType = null;

        /**
         * Number of services
         * @type {number || null}
         */
        this.InquireNum = null;

        /**
         * Service start time
         * @type {string || null}
         */
        this.BeginTime = null;

        /**
         * Service end time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Service duration, in months
         * @type {number || null}
         */
        this.ServiceTime = null;

        /**
         * Order status. 0: not started; 1: in service; 2: expired; 3: completed; 4: refunded and terminated.
         * @type {number || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.OrderId = 'OrderId' in params ? params.OrderId : null;
        this.InquireType = 'InquireType' in params ? params.InquireType : null;
        this.InquireNum = 'InquireNum' in params ? params.InquireNum : null;
        this.BeginTime = 'BeginTime' in params ? params.BeginTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ServiceTime = 'ServiceTime' in params ? params.ServiceTime : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DescribeAssetEnvList response structure.
 * @class
 */
class DescribeAssetEnvListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetEnvBaseInfo> || null}
         */
        this.Envs = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Envs) {
            this.Envs = new Array();
            for (let z in params.Envs) {
                let obj = new AssetEnvBaseInfo();
                obj.deserialize(params.Envs[z]);
                this.Envs.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Enterprise WeChat Robot Rule Details
 * @class
 */
class WebHookRuleDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule name
         * @type {string || null}
         */
        this.RuleName = null;

        /**
         * Chatbot address
         * @type {string || null}
         */
        this.HookAddr = null;

        /**
         * Event type
         * @type {Array.<WebHookEventKv> || null}
         */
        this.RuleItems = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.RuleId = null;

        /**
         * Remarks
         * @type {string || null}
         */
        this.RuleRemark = null;

        /**
         * Host scope
         * @type {Array.<WebHookHostLabel> || null}
         */
        this.HostLabels = null;

        /**
         * Host ID List
         * @type {Array.<string> || null}
         */
        this.HostIds = null;

        /**
         * Whether it is disabled [1: disabled|0: enabled]
         * @type {number || null}
         */
        this.IsDisabled = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleName = 'RuleName' in params ? params.RuleName : null;
        this.HookAddr = 'HookAddr' in params ? params.HookAddr : null;

        if (params.RuleItems) {
            this.RuleItems = new Array();
            for (let z in params.RuleItems) {
                let obj = new WebHookEventKv();
                obj.deserialize(params.RuleItems[z]);
                this.RuleItems.push(obj);
            }
        }
        this.RuleId = 'RuleId' in params ? params.RuleId : null;
        this.RuleRemark = 'RuleRemark' in params ? params.RuleRemark : null;

        if (params.HostLabels) {
            this.HostLabels = new Array();
            for (let z in params.HostLabels) {
                let obj = new WebHookHostLabel();
                obj.deserialize(params.HostLabels[z]);
                this.HostLabels.push(obj);
            }
        }
        this.HostIds = 'HostIds' in params ? params.HostIds : null;
        this.IsDisabled = 'IsDisabled' in params ? params.IsDisabled : null;

    }
}

/**
 * DescribePrivilegeEventInfo request structure.
 * @class
 */
class DescribePrivilegeEventInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ModifyBashPolicy request structure.
 * @class
 */
class ModifyBashPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specific policy configuration
         * @type {BashPolicy || null}
         */
        this.Policy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Policy) {
            let obj = new BashPolicy();
            obj.deserialize(params.Policy)
            this.Policy = obj;
        }

    }
}

/**
 * DescribeScreenEmergentMsg response structure.
 * @class
 */
class DescribeScreenEmergentMsgResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Notification content
         * @type {Array.<ScreenEmergentMsg> || null}
         */
        this.MessageInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MessageInfo) {
            this.MessageInfo = new Array();
            for (let z in params.MessageInfo) {
                let obj = new ScreenEmergentMsg();
                obj.deserialize(params.MessageInfo[z]);
                this.MessageInfo.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteAllJavaMemShells request structure.
 * @class
 */
class DeleteAllJavaMemShellsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * vulnerability defense plugin status of a single process
 * @class
 */
class VulDefencePluginDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the injected process
         * @type {number || null}
         */
        this.Pid = null;

        /**
         * Main class name of the injected process
         * @type {string || null}
         */
        this.MainClass = null;

        /**
         * Plugin status. 0: injecting; 1: injection successful; 2: plugin timed out, 3: plugin exited; 4: injection failed; 5: logically deleted.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Error log
         * @type {string || null}
         */
        this.ErrorLog = null;

        /**
         * Injection log
         * @type {string || null}
         */
        this.InjectLog = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.MainClass = 'MainClass' in params ? params.MainClass : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrorLog = 'ErrorLog' in params ? params.ErrorLog : null;
        this.InjectLog = 'InjectLog' in params ? params.InjectLog : null;

    }
}

/**
 * DescribeVersionCompareChart request structure.
 * @class
 */
class DescribeVersionCompareChartRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLicense request structure.
 * @class
 */
class DescribeLicenseRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeLicenseGeneral request structure.
 * @class
 */
class DescribeLicenseGeneralRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAssetJarInfo request structure.
 * @class
 */
class DescribeAssetJarInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * JAR package ID
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * Account statistics data
 * @class
 */
class AccountStatistics extends  AbstractModel {
    constructor(){
        super();

        /**
         * Username
         * @type {string || null}
         */
        this.Username = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.MachineNum = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Username = 'Username' in params ? params.Username : null;
        this.MachineNum = 'MachineNum' in params ? params.MachineNum : null;

    }
}

/**
 * Details of the asset management account key
 * @class
 */
class AssetUserKeyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Public key value
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Public key remarks
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Encryption method
         * @type {string || null}
         */
        this.EncryptType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Value = 'Value' in params ? params.Value : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.EncryptType = 'EncryptType' in params ? params.EncryptType : null;

    }
}

/**
 * DescribeMachines response structure.
 * @class
 */
class DescribeMachinesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of hosts
         * @type {Array.<Machine> || null}
         */
        this.Machines = null;

        /**
         * Number of hosts
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Machines) {
            this.Machines = new Array();
            for (let z in params.Machines) {
                let obj = new Machine();
                obj.deserialize(params.Machines[z]);
                this.Machines.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeMalwareWhiteList response structure.
 * @class
 */
class DescribeMalwareWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of allowlist
         * @type {Array.<MalwareWhiteListInfo> || null}
         */
        this.WhiteList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.WhiteList) {
            this.WhiteList = new Array();
            for (let z in params.WhiteList) {
                let obj = new MalwareWhiteListInfo();
                obj.deserialize(params.WhiteList[z]);
                this.WhiteList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Anti-Ransomware Machine Hard Disk Configuration
 * @class
 */
class RansomDefenseStrategyMachineInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Specified Hard Disk List. When it is empty, it means all hard disks: disk_id1|disk_name1;disk_id2|disk_name2.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DiskInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.DiskInfo = 'DiskInfo' in params ? params.DiskInfo : null;

    }
}

/**
 * DescribeAssetWebLocationList request structure.
 * @class
 */
class DescribeAssetWebLocationListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filtering criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID</li>
<li>Name - String - required: no - domain name</li>
<li>User - String - required: no - running user</li>
<li>Port - uint64 - required: no - site port</li>
<li>Proto - uint64 - required: no - site protocol: 1: HTTP; 2: HTTPS</li><li>ServiceType - uint64 - required: no - service type:
1:Tomcat
2: Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - String - required: no - Windows/Linux</li>
<li>Os - String required: no - operating system (value of DescribeMachineOsList)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting method: [FirstTime|PathCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeAssetHostTotalCount request structure.
 * @class
 */
class DescribeAssetHostTotalCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * CreateMaliciousRequestWhiteList response structure.
 * @class
 */
class CreateMaliciousRequestWhiteListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulLevelCount request structure.
 * @class
 */
class DescribeVulLevelCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * 1: web CMS vulnerability; 2: application vulnerability; 3: security baseline; 4: Linux software vulnerability; 5: Windows system vulnerability; 6: emergency vulnerability. If this parameter is left blank or set to 0, the statistics data of all vulnerabilities of types 1, 2, 4, and 5 is returned.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Whether to count only critical vulnerabilities. 1: only critical vulnerabilities; 0: all vulnerabilities.
         * @type {number || null}
         */
        this.IsFollowVul = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.IsFollowVul = 'IsFollowVul' in params ? params.IsFollowVul : null;

    }
}

/**
 * ScanVul request structure.
 * @class
 */
class ScanVulRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to count only critical vulnerabilities. 1: only critical vulnerabilities; 0: all vulnerabilities.
         * @type {string || null}
         */
        this.VulLevels = null;

        /**
         * Server type. 1: Pro Edition server; 2: selected server.
         * @type {number || null}
         */
        this.HostType = null;

        /**
         * Vulnerability category. 1: web CMS vulnerability; 2: application vulnerability; 4: Linux software vulnerability; 5: Windows system vulnerability (separate multiple values by commas).
         * @type {string || null}
         */
        this.VulCategories = null;

        /**
         * String array of host QUUIDs. This parameter is effective for selected servers.
         * @type {Array.<string> || null}
         */
        this.QuuidList = null;

        /**
         * Whether it is an emergency vulnerability. 0: no; 1: yes.
         * @type {number || null}
         */
        this.VulEmergency = null;

        /**
         * Scan duration, in seconds. Default duration: 3,600 second.
         * @type {number || null}
         */
        this.TimeoutPeriod = null;

        /**
         * IDs of vulnerabilities to be scanned
         * @type {Array.<number> || null}
         */
        this.VulIds = null;

        /**
         * 
         * @type {number || null}
         */
        this.ScanMethod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VulLevels = 'VulLevels' in params ? params.VulLevels : null;
        this.HostType = 'HostType' in params ? params.HostType : null;
        this.VulCategories = 'VulCategories' in params ? params.VulCategories : null;
        this.QuuidList = 'QuuidList' in params ? params.QuuidList : null;
        this.VulEmergency = 'VulEmergency' in params ? params.VulEmergency : null;
        this.TimeoutPeriod = 'TimeoutPeriod' in params ? params.TimeoutPeriod : null;
        this.VulIds = 'VulIds' in params ? params.VulIds : null;
        this.ScanMethod = 'ScanMethod' in params ? params.ScanMethod : null;

    }
}

/**
 * AddLoginWhiteLists request structure.
 * @class
 */
class AddLoginWhiteListsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Cross-region log-in allowlist entity
         * @type {HostLoginWhiteObj || null}
         */
        this.HostLoginWhiteObj = null;

        /**
         * Synchronous event processing method:
"": do not process"All": add all events that match this configuration to the allowlist"Id": add the event corresponding to the event ID to the allowlist
         * @type {string || null}
         */
        this.ProcessType = null;

        /**
         * Cross-region log-in event ID. This parameter is required when ProcessType is set to Id.
         * @type {number || null}
         */
        this.EventId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.HostLoginWhiteObj) {
            let obj = new HostLoginWhiteObj();
            obj.deserialize(params.HostLoginWhiteObj)
            this.HostLoginWhiteObj = obj;
        }
        this.ProcessType = 'ProcessType' in params ? params.ProcessType : null;
        this.EventId = 'EventId' in params ? params.EventId : null;

    }
}

/**
 * DescribeVulHostCountScanTime request structure.
 * @class
 */
class DescribeVulHostCountScanTimeRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeProVersionStatus request structure.
 * @class
 */
class DescribeProVersionStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * CWPP client UUID. If the value is all, it indicates all hosts.
         * @type {string || null}
         */
        this.Uuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;

    }
}

/**
 * DescribeBaselineList response structure.
 * @class
 */
class DescribeBaselineListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of baseline information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<BaselineInfo> || null}
         */
        this.BaselineList = null;

        /**
         * Total number of records for paging query
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BaselineList) {
            this.BaselineList = new Array();
            for (let z in params.BaselineList) {
                let obj = new BaselineInfo();
                obj.deserialize(params.BaselineList[z]);
                this.BaselineList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeBashEventsInfo response structure.
 * @class
 */
class DescribeBashEventsInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {BashEventsInfo || null}
         */
        this.BashEventsInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BashEventsInfo) {
            let obj = new BashEventsInfo();
            obj.deserialize(params.BashEventsInfo)
            this.BashEventsInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeJavaMemShellPluginInfo response structure.
 * @class
 */
class DescribeJavaMemShellPluginInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Java Memory Trojan Plugin List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<JavaMemShellPluginInfo> || null}
         */
        this.List = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new JavaMemShellPluginInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of hosts affected by vulnerabilities
 * @class
 */
class VulEffectHostList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventId = null;

        /**
         * Status. 0: pending; 1: ignored; 3: fixed; 5: detecting; 6: fixing; 7: rolling back; 8: fixing failed.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Last detection time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Hazard level: 1-Low-risk; 2-Medium-risk; 3-High-risk; 4-Critical
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * Host QUUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.HostIp = null;

        /**
         * Host alias
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AliasName = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Description
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Edition information. 0: Basic Edition; 1: Pro Edition; 2: Ultimate Edition; 3: Inclusive Edition.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.HostVersion = null;

        /**
         * Whether automatic fixing is supported. 0: not supported; 1: supported; 2: client offline; 3: manual fixing supported for Ultimate Edition hosts; 4: not supported for this model; 5: fixing, 6: fixed; 7: detecting; 9: fixing failed; 10: ignored; 11: supported for Linux but not Windows; 12: supported for Windows but not Linux; 13: fixing failed but host is offline; 14: fixing failed but host is not of the Ultimate edition; 15: manually fixed.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsSupportAutoFix = null;

        /**
         * Failure cause
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FixStatusMsg = null;

        /**
         * First detection time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FirstDiscoveryTime = null;

        /**
         * Instance status. "PENDING": creating; "LAUNCH_FAILED" : creation failed; "RUNNING": running; "STOPPED": shut down; "STARTING": starting; "STOPPING": shutting down; "REBOOTING": restarting; "SHUTDOWN": shut down and pending termination; "TERMINATING": terminating.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Public IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.PublicIpAddresses = null;

        /**
         * Cloud tag information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<Tags> || null}
         */
        this.CloudTags = null;

        /**
         * Host additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventId = 'EventId' in params ? params.EventId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.HostIp = 'HostIp' in params ? params.HostIp : null;
        this.AliasName = 'AliasName' in params ? params.AliasName : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.HostVersion = 'HostVersion' in params ? params.HostVersion : null;
        this.IsSupportAutoFix = 'IsSupportAutoFix' in params ? params.IsSupportAutoFix : null;
        this.FixStatusMsg = 'FixStatusMsg' in params ? params.FixStatusMsg : null;
        this.FirstDiscoveryTime = 'FirstDiscoveryTime' in params ? params.FirstDiscoveryTime : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.PublicIpAddresses = 'PublicIpAddresses' in params ? params.PublicIpAddresses : null;

        if (params.CloudTags) {
            this.CloudTags = new Array();
            for (let z in params.CloudTags) {
                let obj = new Tags();
                obj.deserialize(params.CloudTags[z]);
                this.CloudTags.push(obj);
            }
        }

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeAlarmIncidentNodes response structure.
 * @class
 */
class DescribeAlarmIncidentNodesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * All node information on the event corresponding to an alarm. Multiple events may be involved.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<IncidentVertexInfo> || null}
         */
        this.IncidentNodes = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.IncidentNodes) {
            this.IncidentNodes = new Array();
            for (let z in params.IncidentNodes) {
                let obj = new IncidentVertexInfo();
                obj.deserialize(params.IncidentNodes[z]);
                this.IncidentNodes.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeExpertServiceOrderList request structure.
 * @class
 */
class DescribeExpertServiceOrderListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>InquireType- String - required: no - order type for filtering,</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Number of entries on each page. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * DescribeFileTamperRules request structure.
 * @class
 */
class DescribeFileTamperRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria
<li>RuleCategory - string - rule category: 0: system rule; 1: user rule</li><li>Name - String - rule name</li>
         * @type {Array.<Filters> || null}
         */
        this.Filters = null;

        /**
         * Offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting order: ASC, DESC
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting field: CreateTime, ModifyTime, HostCount
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeJavaMemShellInfo response structure.
 * @class
 */
class DescribeJavaMemShellInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Java webshell event details
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {JavaMemShellDetail || null}
         */
        this.Info = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Info) {
            let obj = new JavaMemShellDetail();
            obj.deserialize(params.Info)
            this.Info = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRecommendedProtectCpu request structure.
 * @class
 */
class DescribeRecommendedProtectCpuRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeABTestConfig response structure.
 * @class
 */
class DescribeABTestConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Grayscale project configuration
         * @type {Array.<ABTestConfig> || null}
         */
        this.Config = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Config) {
            this.Config = new Array();
            for (let z in params.Config) {
                let obj = new ABTestConfig();
                obj.deserialize(params.Config[z]);
                this.Config.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * List of host snapshot backup
 * @class
 */
class RansomDefenseBackup extends  AbstractModel {
    constructor(){
        super();

        /**
         * Backup time
         * @type {string || null}
         */
        this.BackupTime = null;

        /**
         * Ransom Status: 0 - No Alarm, 1 - Alarm Present
         * @type {number || null}
         */
        this.EventStatus = null;

        /**
         * Backup Status: 0 - Backing up, 1 - Normal, 2, 3 - Failed, 4 - Snapshot expired, 9 - Snapshot deleted
         * @type {number || null}
         */
        this.BackupStatus = null;

        /**
         * Number of backup disk
         * @type {number || null}
         */
        this.DiskCount = null;

        /**
         * Hard Disk Information, separated by semicolons (;).
         * @type {string || null}
         */
        this.Disks = null;

        /**
         * Snapshot List, separated by semicolons (;)
         * @type {string || null}
         */
        this.SnapshotIds = null;

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Policy Status: 0 Disabled, 1 Enabled, 9 Deleted
         * @type {number || null}
         */
        this.StrategyStatus = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BackupTime = 'BackupTime' in params ? params.BackupTime : null;
        this.EventStatus = 'EventStatus' in params ? params.EventStatus : null;
        this.BackupStatus = 'BackupStatus' in params ? params.BackupStatus : null;
        this.DiskCount = 'DiskCount' in params ? params.DiskCount : null;
        this.Disks = 'Disks' in params ? params.Disks : null;
        this.SnapshotIds = 'SnapshotIds' in params ? params.SnapshotIds : null;
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.StrategyStatus = 'StrategyStatus' in params ? params.StrategyStatus : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;

    }
}

/**
 * DescribeProVersionStatus response structure.
 * @class
 */
class DescribeProVersionStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Quick search template
 * @class
 */
class SearchTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name for search
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Index type for search
         * @type {string || null}
         */
        this.LogType = null;

        /**
         * Statement for search
         * @type {string || null}
         */
        this.Condition = null;

        /**
         * Time range
         * @type {string || null}
         */
        this.TimeRange = null;

        /**
         * Converted search statement content
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Search method. Input box: standard filtering. Search: simple.
         * @type {string || null}
         */
        this.Flag = null;

        /**
         * Displayed data
         * @type {string || null}
         */
        this.DisplayData = null;

        /**
         * Rule ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.LogType = 'LogType' in params ? params.LogType : null;
        this.Condition = 'Condition' in params ? params.Condition : null;
        this.TimeRange = 'TimeRange' in params ? params.TimeRange : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.Flag = 'Flag' in params ? params.Flag : null;
        this.DisplayData = 'DisplayData' in params ? params.DisplayData : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeVulFixStatus response structure.
 * @class
 */
class DescribeVulFixStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Fixing start time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FixStartTime = null;

        /**
         * Fixing end time. If this parameter is left blank, fixing is not ended.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FixEndTime = null;

        /**
         * Number of successfully fixed hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FixSuccessCnt = null;

        /**
         * Number of hosts failed to be fixed
         * @type {number || null}
         */
        this.FixFailCnt = null;

        /**
         * Total number of hosts
         * @type {number || null}
         */
        this.HostCnt = null;

        /**
         * Fixing task ID
         * @type {number || null}
         */
        this.FixId = null;

        /**
         * Status list of snapshots to be fixed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulFixStatusSnapshotInfo> || null}
         */
        this.SnapshotList = null;

        /**
         * Details list of vulnerabilities to be fixed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulFixStatusInfo> || null}
         */
        this.VulFixList = null;

        /**
         * Snapshot creation progress (0-100)
         * @type {number || null}
         */
        this.SnapshotProgress = null;

        /**
         * Fixing progress (0-100)
         * @type {number || null}
         */
        this.FixProgress = null;

        /**
         * Estimated remaining time (seconds)
         * @type {number || null}
         */
        this.RemainingTime = null;

        /**
         * Whether the snapshot is retried. 0: no; 1: yes.
         * @type {number || null}
         */
        this.IsRetrySnapshot = null;

        /**
         * Number of snapshots failed to be created
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SnapshotFailCnt = null;

        /**
         * Whether retry is allowed. 0: not allowed; 1: allowed.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsAllowRetry = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FixStartTime = 'FixStartTime' in params ? params.FixStartTime : null;
        this.FixEndTime = 'FixEndTime' in params ? params.FixEndTime : null;
        this.FixSuccessCnt = 'FixSuccessCnt' in params ? params.FixSuccessCnt : null;
        this.FixFailCnt = 'FixFailCnt' in params ? params.FixFailCnt : null;
        this.HostCnt = 'HostCnt' in params ? params.HostCnt : null;
        this.FixId = 'FixId' in params ? params.FixId : null;

        if (params.SnapshotList) {
            this.SnapshotList = new Array();
            for (let z in params.SnapshotList) {
                let obj = new VulFixStatusSnapshotInfo();
                obj.deserialize(params.SnapshotList[z]);
                this.SnapshotList.push(obj);
            }
        }

        if (params.VulFixList) {
            this.VulFixList = new Array();
            for (let z in params.VulFixList) {
                let obj = new VulFixStatusInfo();
                obj.deserialize(params.VulFixList[z]);
                this.VulFixList.push(obj);
            }
        }
        this.SnapshotProgress = 'SnapshotProgress' in params ? params.SnapshotProgress : null;
        this.FixProgress = 'FixProgress' in params ? params.FixProgress : null;
        this.RemainingTime = 'RemainingTime' in params ? params.RemainingTime : null;
        this.IsRetrySnapshot = 'IsRetrySnapshot' in params ? params.IsRetrySnapshot : null;
        this.SnapshotFailCnt = 'SnapshotFailCnt' in params ? params.SnapshotFailCnt : null;
        this.IsAllowRetry = 'IsAllowRetry' in params ? params.IsAllowRetry : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeGeneralStat response structure.
 * @class
 */
class DescribeGeneralStatResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of hosts
         * @type {number || null}
         */
        this.MachinesAll = null;

        /**
         * Total number of hosts not installed with the CWPP client
         * @type {number || null}
         */
        this.MachinesUninstalled = null;

        /**
         * Total number of CWPP clients
         * @type {number || null}
         */
        this.AgentsAll = null;

        /**
         * Total number of online CWPP clients
         * @type {number || null}
         */
        this.AgentsOnline = null;

        /**
         * Total number of CWPP clients that are offline and shut down
         * @type {number || null}
         */
        this.AgentsOffline = null;

        /**
         * Total number of Pro Edition CWPP clients
         * @type {number || null}
         */
        this.AgentsPro = null;

        /**
         * Total number of Basic Edition CWPP clients
         * @type {number || null}
         */
        this.AgentsBasic = null;

        /**
         * Total number of prepaid Pro Edition CWPP clients that will expire in 7 days
         * @type {number || null}
         */
        this.AgentsProExpireWithInSevenDays = null;

        /**
         * Total number of risky hosts
         * @type {number || null}
         */
        this.RiskMachine = null;

        /**
         * Total number of hosts that are shut down
         * @type {number || null}
         */
        this.Shutdown = null;

        /**
         * Total number of offline hosts
         * @type {number || null}
         */
        this.Offline = null;

        /**
         * Number of Ultimate Edition hosts
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.FlagshipMachineCnt = null;

        /**
         * Protection duration, in days
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ProtectDays = null;

        /**
         * Number of hosts added in the last 15 days
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AddedOnTheFifteen = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachinesAll = 'MachinesAll' in params ? params.MachinesAll : null;
        this.MachinesUninstalled = 'MachinesUninstalled' in params ? params.MachinesUninstalled : null;
        this.AgentsAll = 'AgentsAll' in params ? params.AgentsAll : null;
        this.AgentsOnline = 'AgentsOnline' in params ? params.AgentsOnline : null;
        this.AgentsOffline = 'AgentsOffline' in params ? params.AgentsOffline : null;
        this.AgentsPro = 'AgentsPro' in params ? params.AgentsPro : null;
        this.AgentsBasic = 'AgentsBasic' in params ? params.AgentsBasic : null;
        this.AgentsProExpireWithInSevenDays = 'AgentsProExpireWithInSevenDays' in params ? params.AgentsProExpireWithInSevenDays : null;
        this.RiskMachine = 'RiskMachine' in params ? params.RiskMachine : null;
        this.Shutdown = 'Shutdown' in params ? params.Shutdown : null;
        this.Offline = 'Offline' in params ? params.Offline : null;
        this.FlagshipMachineCnt = 'FlagshipMachineCnt' in params ? params.FlagshipMachineCnt : null;
        this.ProtectDays = 'ProtectDays' in params ? params.ProtectDays : null;
        this.AddedOnTheFifteen = 'AddedOnTheFifteen' in params ? params.AddedOnTheFifteen : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeLogExports request structure.
 * @class
 */
class DescribeLogExportsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Paging offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries per page. Default value: 20. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DeleteMachineTag response structure.
 * @class
 */
class DeleteMachineTagResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateMachineTags response structure.
 * @class
 */
class UpdateMachineTagsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Password cracking list entity
 * @class
 */
class BruteAttackInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID
         * @type {number || null}
         */
        this.Id = null;

        /**
         * CWPP client UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Host name
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Username
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UserName = null;

        /**
         * Source IP address
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SrcIp = null;

        /**
         * SUCCESS: cracking successful; FAILED: cracking failed
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Country/Region ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Country = null;

        /**
         * City ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.City = null;

        /**
         * Province ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Province = null;

        /**
         * Creation time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * 0: no blocking (not supported for the client version)1: blocked
2: blocking failed (program exception)
3: no blocking (do not block for the private network)
4: availability zone does not support blocking
10: blocking
81: no blocking (blocking disabled)
82: no blocking (non-Pro Edition)
83: no blocking (added to the allowlist)
86: no blocking (system allowlist)
87: no blocking (client offline)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.BanStatus = null;

        /**
         * Event type. 200: brute force cracking event; 300: event of successful brute force cracking (page display); 400: event of brute force cracking on a non-existent account.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EventType = null;

        /**
         * Occurrence count
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Machine UUID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Whether it is of the Pro Edition (true/false)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.IsProVersion = null;

        /**
         * Username of the attacked service
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Protocol = null;

        /**
         * Port
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Port = null;

        /**
         * Last attack time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Instance ID
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.InstanceId = null;

        /**
         * 0: pending; 1: ignored; 5: fixed; 6: added to allowlist
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DataStatus = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

        /**
         * Geo-location in Chinese
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Location = null;

        /**
         * Threat level. 0: low-risk; 1: medium-risk; 2: high-risk.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RiskLevel = null;

        /**
         * Event source. 0: blocking rule; 1: threat intelligence.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.DataFrom = null;

        /**
         * Description of the brute force cracking status
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.AttackStatusDesc = null;

        /**
         * Blocking expiration time (valid only for events in blocking status)
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.BanExpiredTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UserName = 'UserName' in params ? params.UserName : null;
        this.SrcIp = 'SrcIp' in params ? params.SrcIp : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Country = 'Country' in params ? params.Country : null;
        this.City = 'City' in params ? params.City : null;
        this.Province = 'Province' in params ? params.Province : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.BanStatus = 'BanStatus' in params ? params.BanStatus : null;
        this.EventType = 'EventType' in params ? params.EventType : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.IsProVersion = 'IsProVersion' in params ? params.IsProVersion : null;
        this.Protocol = 'Protocol' in params ? params.Protocol : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.InstanceId = 'InstanceId' in params ? params.InstanceId : null;
        this.DataStatus = 'DataStatus' in params ? params.DataStatus : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }
        this.Location = 'Location' in params ? params.Location : null;
        this.RiskLevel = 'RiskLevel' in params ? params.RiskLevel : null;
        this.DataFrom = 'DataFrom' in params ? params.DataFrom : null;
        this.AttackStatusDesc = 'AttackStatusDesc' in params ? params.AttackStatusDesc : null;
        this.BanExpiredTime = 'BanExpiredTime' in params ? params.BanExpiredTime : null;

    }
}

/**
 * ModifyLoginWhiteInfo request structure.
 * @class
 */
class ModifyLoginWhiteInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Update the allowlist information entity
         * @type {UpdateHostLoginWhiteObj || null}
         */
        this.HostLoginWhiteObj = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.HostLoginWhiteObj) {
            let obj = new UpdateHostLoginWhiteObj();
            obj.deserialize(params.HostLoginWhiteObj)
            this.HostLoginWhiteObj = obj;
        }

    }
}

/**
 * DescribeVulFixStatus request structure.
 * @class
 */
class DescribeVulFixStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID. This parameter can be left blank if VulId is specified.
         * @type {number || null}
         */
        this.FixId = null;

        /**
         * Vulnerability ID. This parameter can be left blank if FixId is specified.
         * @type {number || null}
         */
        this.VulId = null;

        /**
         * Host QUUID. This parameter can be used together with VulId to query the details of the last fixing task on a specific host.
         * @type {string || null}
         */
        this.Quuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FixId = 'FixId' in params ? params.FixId : null;
        this.VulId = 'VulId' in params ? params.VulId : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

    }
}

/**
 * UpdateMachineTags request structure.
 * @class
 */
class UpdateMachineTagsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Tag ID. This operation will overwrite the existing Tag list.
         * @type {Array.<number> || null}
         */
        this.TagIds = null;

        /**
         * Server region. For example, ap-guangzhou.
         * @type {string || null}
         */
        this.MachineRegion = null;

        /**
         * Server type (CVM|BM|ECM|LH|Other)
         * @type {string || null}
         */
        this.MachineArea = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.TagIds = 'TagIds' in params ? params.TagIds : null;
        this.MachineRegion = 'MachineRegion' in params ? params.MachineRegion : null;
        this.MachineArea = 'MachineArea' in params ? params.MachineArea : null;

    }
}

/**
 * DescribeBaselineItemDetectList response structure.
 * @class
 */
class DescribeBaselineItemDetectListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * None
         * @type {Array.<BaselineItemDetect> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new BaselineItemDetect();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeScanTaskDetails response structure.
 * @class
 */
class DescribeScanTaskDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of scan task information
         * @type {Array.<ScanTaskDetails> || null}
         */
        this.ScanTaskDetailList = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total number of scanned machines
         * @type {number || null}
         */
        this.ScanMachineCount = null;

        /**
         * Number of machines with risks detected
         * @type {number || null}
         */
        this.RiskMachineCount = null;

        /**
         * Scan start time
         * @type {string || null}
         */
        this.ScanBeginTime = null;

        /**
         * Scan end time
         * @type {string || null}
         */
        this.ScanEndTime = null;

        /**
         * Scan time
         * @type {number || null}
         */
        this.ScanTime = null;

        /**
         * Scan progress
         * @type {number || null}
         */
        this.ScanProgress = null;

        /**
         * Remaining scan time
         * @type {number || null}
         */
        this.ScanLeftTime = null;

        /**
         * Scan content
         * @type {Array.<string> || null}
         */
        this.ScanContent = null;

        /**
         * Vulnerability information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<VulDetailInfo> || null}
         */
        this.VulInfo = null;

        /**
         * Number of risk events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.RiskEventCount = null;

        /**
         * 0: one-click scan; 1: scheduled scan.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Whether all tasks are being stopped. true: yes.Note: This field may return null, indicating that no valid values can be obtained.
         * @type {boolean || null}
         */
        this.StoppingAll = null;

        /**
         * Number of vulnerabilities scanned
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VulCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ScanTaskDetailList) {
            this.ScanTaskDetailList = new Array();
            for (let z in params.ScanTaskDetailList) {
                let obj = new ScanTaskDetails();
                obj.deserialize(params.ScanTaskDetailList[z]);
                this.ScanTaskDetailList.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.ScanMachineCount = 'ScanMachineCount' in params ? params.ScanMachineCount : null;
        this.RiskMachineCount = 'RiskMachineCount' in params ? params.RiskMachineCount : null;
        this.ScanBeginTime = 'ScanBeginTime' in params ? params.ScanBeginTime : null;
        this.ScanEndTime = 'ScanEndTime' in params ? params.ScanEndTime : null;
        this.ScanTime = 'ScanTime' in params ? params.ScanTime : null;
        this.ScanProgress = 'ScanProgress' in params ? params.ScanProgress : null;
        this.ScanLeftTime = 'ScanLeftTime' in params ? params.ScanLeftTime : null;
        this.ScanContent = 'ScanContent' in params ? params.ScanContent : null;

        if (params.VulInfo) {
            this.VulInfo = new Array();
            for (let z in params.VulInfo) {
                let obj = new VulDetailInfo();
                obj.deserialize(params.VulInfo[z]);
                this.VulInfo.push(obj);
            }
        }
        this.RiskEventCount = 'RiskEventCount' in params ? params.RiskEventCount : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.StoppingAll = 'StoppingAll' in params ? params.StoppingAll : null;
        this.VulCount = 'VulCount' in params ? params.VulCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateBaselineStrategy request structure.
 * @class
 */
class UpdateBaselineStrategyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

        /**
         * Policy name
         * @type {string || null}
         */
        this.StrategyName = null;

        /**
         * Detection period
         * @type {number || null}
         */
        this.ScanCycle = null;

        /**
         * Time when routine detection scans are triggered.
         * @type {string || null}
         */
        this.ScanAt = null;

        /**
         * Array of baseline IDs selected under this policy
         * @type {Array.<string> || null}
         */
        this.CategoryIds = null;

        /**
         * Whether all servers are scanned: 1: yes; 0 :no. If the value is 1, all Professional Edition hosts are scanned.
         * @type {number || null}
         */
        this.IsGlobal = null;

        /**
         * CVM type:
cvm: Tencent Cloud Virtual Machine
bm: bare metal
ecm: edge computing host
lh: Tencent Cloud Lighthouse
other: hybrid cloud machine
         * @type {string || null}
         */
        this.MachineType = null;

        /**
         * Host region ap-guangzhou
         * @type {string || null}
         */
        this.RegionCode = null;

        /**
         * Host ID array
         * @type {Array.<string> || null}
         */
        this.Quuids = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;
        this.StrategyName = 'StrategyName' in params ? params.StrategyName : null;
        this.ScanCycle = 'ScanCycle' in params ? params.ScanCycle : null;
        this.ScanAt = 'ScanAt' in params ? params.ScanAt : null;
        this.CategoryIds = 'CategoryIds' in params ? params.CategoryIds : null;
        this.IsGlobal = 'IsGlobal' in params ? params.IsGlobal : null;
        this.MachineType = 'MachineType' in params ? params.MachineType : null;
        this.RegionCode = 'RegionCode' in params ? params.RegionCode : null;
        this.Quuids = 'Quuids' in params ? params.Quuids : null;

    }
}

/**
 * DescribeHostLoginList response structure.
 * @class
 */
class DescribeHostLoginListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Log-in an audit list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<HostLoginList> || null}
         */
        this.HostLoginList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.HostLoginList) {
            this.HostLoginList = new Array();
            for (let z in params.HostLoginList) {
                let obj = new HostLoginList();
                obj.deserialize(params.HostLoginList[z]);
                this.HostLoginList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribePublicProxyInstallCommand response structure.
 * @class
 */
class DescribePublicProxyInstallCommandResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Nginx Installation Command
         * @type {string || null}
         */
        this.NginxCommand = null;

        /**
         * Keepalived Installation Command
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.KeepAliveCommand = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NginxCommand = 'NginxCommand' in params ? params.NginxCommand : null;
        this.KeepAliveCommand = 'KeepAliveCommand' in params ? params.KeepAliveCommand : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackTop request structure.
 * @class
 */
class DescribeAttackTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         *  Filter criteria
<li>BeginTime - String - start time, defaulted to last 7 days - required: no</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }

    }
}

/**
 * ModifyRiskEventsStatus response structure.
 * @class
 */
class ModifyRiskEventsStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether this operation is asynchronous. 0: operation completed; 1: asynchronous operation in progress and DescribeRiskBatchStatus needs to be called by front end to check if the operation is completed.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.IsSync = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsSync = 'IsSync' in params ? params.IsSync : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeVulCveIdInfo request structure.
 * @class
 */
class DescribeVulCveIdInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability cve_id list
         * @type {Array.<string> || null}
         */
        this.CveIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CveIds = 'CveIds' in params ? params.CveIds : null;

    }
}

/**
 * ModifyJavaMemShellsStatus response structure.
 * @class
 */
class ModifyJavaMemShellsStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic information of resource management account
 * @class
 */
class AssetPortBaseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Private IP address of the host
         * @type {string || null}
         */
        this.MachineIp = null;

        /**
         * Public IP address of the host
         * @type {string || null}
         */
        this.MachineWanIp = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Operating System Information
         * @type {string || null}
         */
        this.OsInfo = null;

        /**
         * Host business group ID
         * @type {number || null}
         */
        this.ProjectId = null;

        /**
         * Host tag
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MachineTag> || null}
         */
        this.Tag = null;

        /**
         * Process name
         * @type {string || null}
         */
        this.ProcessName = null;

        /**
         * Process version
         * @type {string || null}
         */
        this.ProcessVersion = null;

        /**
         * Process path
         * @type {string || null}
         */
        this.ProcessPath = null;

        /**
         * Process ID
         * @type {string || null}
         */
        this.Pid = null;

        /**
         * Running user
         * @type {string || null}
         */
        this.User = null;

        /**
         * Start time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Start parameter
         * @type {string || null}
         */
        this.Param = null;

        /**
         * Process TTY
         * @type {string || null}
         */
        this.Teletype = null;

        /**
         * Port
         * @type {string || null}
         */
        this.Port = null;

        /**
         * User group
         * @type {string || null}
         */
        this.GroupName = null;

        /**
         * Process MD5
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Parent process ID
         * @type {string || null}
         */
        this.Ppid = null;

        /**
         * Parent process name
         * @type {string || null}
         */
        this.ParentProcessName = null;

        /**
         * Port protocol
         * @type {string || null}
         */
        this.Proto = null;

        /**
         * Bound IP
         * @type {string || null}
         */
        this.BindIp = null;

        /**
         * Host name
         * @type {string || null}
         */
        this.MachineName = null;

        /**
         * Data update time
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * First collection time
         * @type {string || null}
         */
        this.FirstTime = null;

        /**
         * Whether to add [0: no | 1: yes]
         * @type {number || null}
         */
        this.IsNew = null;

        /**
         * Additional information
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MachineExtraInfo || null}
         */
        this.MachineExtraInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MachineIp = 'MachineIp' in params ? params.MachineIp : null;
        this.MachineWanIp = 'MachineWanIp' in params ? params.MachineWanIp : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.OsInfo = 'OsInfo' in params ? params.OsInfo : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.Tag) {
            this.Tag = new Array();
            for (let z in params.Tag) {
                let obj = new MachineTag();
                obj.deserialize(params.Tag[z]);
                this.Tag.push(obj);
            }
        }
        this.ProcessName = 'ProcessName' in params ? params.ProcessName : null;
        this.ProcessVersion = 'ProcessVersion' in params ? params.ProcessVersion : null;
        this.ProcessPath = 'ProcessPath' in params ? params.ProcessPath : null;
        this.Pid = 'Pid' in params ? params.Pid : null;
        this.User = 'User' in params ? params.User : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.Param = 'Param' in params ? params.Param : null;
        this.Teletype = 'Teletype' in params ? params.Teletype : null;
        this.Port = 'Port' in params ? params.Port : null;
        this.GroupName = 'GroupName' in params ? params.GroupName : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Ppid = 'Ppid' in params ? params.Ppid : null;
        this.ParentProcessName = 'ParentProcessName' in params ? params.ParentProcessName : null;
        this.Proto = 'Proto' in params ? params.Proto : null;
        this.BindIp = 'BindIp' in params ? params.BindIp : null;
        this.MachineName = 'MachineName' in params ? params.MachineName : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FirstTime = 'FirstTime' in params ? params.FirstTime : null;
        this.IsNew = 'IsNew' in params ? params.IsNew : null;

        if (params.MachineExtraInfo) {
            let obj = new MachineExtraInfo();
            obj.deserialize(params.MachineExtraInfo)
            this.MachineExtraInfo = obj;
        }

    }
}

/**
 * DescribeAssetWebLocationInfo request structure.
 * @class
 */
class DescribeAssetWebLocationInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Server QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Server UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Site ID
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * DescribeAlarmVertexId request structure.
 * @class
 */
class DescribeAlarmVertexIdRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Machine UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Start timestamp
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End timestamp
         * @type {number || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * DescribeAttackSourceEvents request structure.
 * @class
 */
class DescribeAttackSourceEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Start date
         * @type {string || null}
         */
        this.BeginDate = null;

        /**
         * End date
         * @type {string || null}
         */
        this.EndDate = null;

        /**
         * EventInfoParam returned by DescribeAttackSource API
         * @type {string || null}
         */
        this.EventInfoParam = null;

        /**
         * Maximum number of paginations, which is 10 by default.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Starting step size, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.BeginDate = 'BeginDate' in params ? params.BeginDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;
        this.EventInfoParam = 'EventInfoParam' in params ? params.EventInfoParam : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * DescribeAssetInitServiceList response structure.
 * @class
 */
class DescribeAssetInitServiceListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetInitServiceBaseInfo> || null}
         */
        this.Services = null;

        /**
         * Total number
         * @type {number || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Services) {
            this.Services = new Array();
            for (let z in params.Services) {
                let obj = new AssetInitServiceBaseInfo();
                obj.deserialize(params.Services[z]);
                this.Services.push(obj);
            }
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyBaselinePolicy request structure.
 * @class
 */
class ModifyBaselinePolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * None
         * @type {BaselinePolicy || null}
         */
        this.Data = null;

        /**
         * <li>RuleName - String - required: no - rule name</li>
<li>CategoryId - int64 - required: no - customized filtering: -1 - rule category</li>
<li>RuleType - int - required: no - 0: system default; 1: customized - rule type</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Whether to select all based on the filtering criteria
         * @type {number || null}
         */
        this.SelectAll = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new BaselinePolicy();
            obj.deserialize(params.Data)
            this.Data = obj;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.SelectAll = 'SelectAll' in params ? params.SelectAll : null;

    }
}

/**
 * DescribeBaselineHostDetectList request structure.
 * @class
 */
class DescribeBaselineHostDetectListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>PolicyId - int64 - required: no - policy ID</li>
</li>HostName - string - required: no - host name</i>
<li>HostIp - string - required: no - host IP</i>
<li>ItemId - int64 - required: no - item ID</i>
<li>RuleId - int64 - required: no - rule ID</li>
<li>DetectStatus - int - required: no - detection status</li>
<li>Level - int - required: no - risk level<li>
<li>StartTime - string - required: no - start time</li>
<li>EndTime - string - required: no - end time</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Limit Entries, 10 by default, up to 100
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting Method: [ASC: Ascending Order, DESC: Descending Order]
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional Order Column: [LastTime|ItemCount|PassedItemCount|NotPassedItemCount|FirstTime]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVulDefenceList request structure.
 * @class
 */
class DescribeVulDefenceListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filtering criteria: Level; Keywords
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Data offset
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Data limit
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method (case insensitive): asc for ascending order; desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Sorting column (strictly equal): PublishTime for release time
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * EditTags response structure.
 * @class
 */
class EditTagsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAssetWebFrameList response structure.
 * @class
 */
class DescribeAssetWebFrameListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Data list
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AssetWebFrameBaseInfo> || null}
         */
        this.WebFrames = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.WebFrames) {
            this.WebFrames = new Array();
            for (let z in params.WebFrames) {
                let obj = new AssetWebFrameBaseInfo();
                obj.deserialize(params.WebFrames[z]);
                this.WebFrames.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRansomDefenseStrategyDetail request structure.
 * @class
 */
class DescribeRansomDefenseStrategyDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy ID
         * @type {number || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * ModifyRiskDnsPolicy request structure.
 * @class
 */
class ModifyRiskDnsPolicyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Policy
         * @type {RiskDnsPolicy || null}
         */
        this.Data = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new RiskDnsPolicy();
            obj.deserialize(params.Data)
            this.Data = obj;
        }

    }
}

/**
 * DescribeWarningList response structure.
 * @class
 */
class DescribeWarningListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Obtain Alarm List
         * @type {Array.<WarningInfoObj> || null}
         */
        this.WarningInfoList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.WarningInfoList) {
            this.WarningInfoList = new Array();
            for (let z in params.WarningInfoList) {
                let obj = new WarningInfoObj();
                obj.deserialize(params.WarningInfoList[z]);
                this.WarningInfoList.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttackSourceEvents response structure.
 * @class
 */
class DescribeAttackSourceEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Attack tracing event list
         * @type {Array.<AttackSourceEvent> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new AttackSourceEvent();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ClearLocalStorage request structure.
 * @class
 */
class ClearLocalStorageRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * DescribeAssetUserList request structure.
 * @class
 */
class DescribeAssetUserListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>IP - String - required: no - host IP address</li>
<li>MachineName - String - required: no - host name</li>
<li>InstanceID - string - required: no - instance ID<li>
<li>Name - String - required: no - account name (fuzzy match)</li>
<li>NameStrict - String - required: no - account name (strict match)</li>
<li>Uid - uint64 - required: no - UID</li>
<li>Guid - uint64 - required: no - GUID</li>
<li>LoginTimeStart - String - required: no - start time, such as 2021-01-11</li>
<li>LoginTimeEnd - String - required: no - end time, such as 2021-01-11</li>
<li>LoginType - uint64 - required: no - 0 - not allowed to log in; 1 - only key-based log-in allowed; 2 - only password-based log-in allowed; 3 - both key-based and password-based log-in allowed (Linux only)</li>
<li>OsType - String - required: no - Windows or Linux</li>
<li>Status - uint64 - required: no - account status: 0 - disabled; 1 - enabled</li>
<li>UserType - uint64 - required: no - account type: 0 - guest user; 1 - standard user; 2 - administrator user (Windows Only)</li>
<li>IsDomain - uint64 - required: no - whether a domain account: 0 - no; 1 - yes (Windows only)</li>
<li>IsRoot - uint64 - required: no - whether there is root permission: 0 - no; 1 - yes (Linux only)</li>
<li>IsSudo - uint64 - required: no - whether there is sudo permission: 0 - no; 1 - yes (Linux only)</li>
<li>IsSshLogin - uint64 - required: no - whether to use SSH log-in: 0 - no; 1 - yes (Linux only)</li>
<li>ShellLoginStatus - uint64 - required: no - whether to use Shell log-in: 0 - no; 1 - yes (Linux only)</li>
<li>PasswordStatus - uint64 - required: no - password status: 1 - normal; 2 - expiring soon; 3 - expired; 4 - locked (Linux only)</li>
<li>Os -String required: no - operating system (the value of DescribeMachineOsList API)</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FirstTime|LoginTime|PasswordChangeTime|PasswordDuaTime|PasswordLockDays]

         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DeleteBaselineStrategy request structure.
 * @class
 */
class DeleteBaselineStrategyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Baseline policy ID
         * @type {number || null}
         */
        this.StrategyId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyId = 'StrategyId' in params ? params.StrategyId : null;

    }
}

/**
 * DescribeAssetSystemPackageList request structure.
 * @class
 */
class DescribeAssetSystemPackageListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Host UUID
         * @type {string || null}
         */
        this.Uuid = null;

        /**
         * Host QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>Name - String - required: no - package name</li>
<li>StartTime - String - required: no - start time of installation</li>
<li>EndTime - String - required: no - end time of installation</li>
<li>Type- int - required: no - installation package type:
1:rmp
2:dpkg
3:java
4:system</li>
         * @type {Array.<Filter> || null}
         */
        this.Filters = null;

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order. Default: desc for descending order.
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FistTime|InstallTime: installation time]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uuid = 'Uuid' in params ? params.Uuid : null;
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new Filter();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * DescribeVulHostTop request structure.
 * @class
 */
class DescribeVulHostTopRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Obtain top values: 1-100
         * @type {number || null}
         */
        this.Top = null;

        /**
         * 1: web-cms vulnerabilities; 2: application vulnerabilities; 4: Linux software vulnerabilities; 5: Windows system vulnerabilities; 6: emergency vulnerabilities. If it is left blank or set to 0, the total statistics of vulnerabilities 1, 2, 4, and 5 are returned.
         * @type {number || null}
         */
        this.VulCategory = null;

        /**
         * Whether to count only critical vulnerabilities: 1: only critical vulnerabilities; 0: all vulnerabilities
         * @type {number || null}
         */
        this.IsFollowVul = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Top = 'Top' in params ? params.Top : null;
        this.VulCategory = 'VulCategory' in params ? params.VulCategory : null;
        this.IsFollowVul = 'IsFollowVul' in params ? params.IsFollowVul : null;

    }
}

/**
 * Server tag information
 * @class
 */
class MachineTag extends  AbstractModel {
    constructor(){
        super();

        /**
         * Associated tag ID
         * @type {number || null}
         */
        this.Rid = null;

        /**
         * Tag name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Tag ID
         * @type {number || null}
         */
        this.TagId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Rid = 'Rid' in params ? params.Rid : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.TagId = 'TagId' in params ? params.TagId : null;

    }
}

/**
 * DescribeSecurityEventsCnt response structure.
 * @class
 */
class DescribeSecurityEventsCntResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Trojan file-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.Malware = null;

        /**
         * Log-in audit-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.HostLogin = null;

        /**
         * Password cracking-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.BruteAttack = null;

        /**
         * Malicious request-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.RiskDns = null;

        /**
         * High-risk command-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.Bash = null;

        /**
         * Local privilege escalation-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.PrivilegeRules = null;

        /**
         * Reverse Shell-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.ReverseShell = null;

        /**
         * Application vulnerability-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.SysVul = null;

        /**
         * Web application vulnerability-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.WebVul = null;

        /**
         * Emergency vulnerability-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.EmergencyVul = null;

        /**
         * Security baseline-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.BaseLine = null;

        /**
         * Attack detection-related risk event
         * @type {SecurityEventInfo || null}
         */
        this.AttackLogs = null;

        /**
         * Number of affected machines
         * @type {number || null}
         */
        this.EffectMachineCount = null;

        /**
         * Total of number of events
         * @type {number || null}
         */
        this.EventsCount = null;

        /**
         * Total of Windows system vulnerability events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {SecurityEventInfo || null}
         */
        this.WindowVul = null;

        /**
         * Total of Linux system vulnerability events
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {SecurityEventInfo || null}
         */
        this.LinuxVul = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Malware) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.Malware)
            this.Malware = obj;
        }

        if (params.HostLogin) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.HostLogin)
            this.HostLogin = obj;
        }

        if (params.BruteAttack) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.BruteAttack)
            this.BruteAttack = obj;
        }

        if (params.RiskDns) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.RiskDns)
            this.RiskDns = obj;
        }

        if (params.Bash) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.Bash)
            this.Bash = obj;
        }

        if (params.PrivilegeRules) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.PrivilegeRules)
            this.PrivilegeRules = obj;
        }

        if (params.ReverseShell) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.ReverseShell)
            this.ReverseShell = obj;
        }

        if (params.SysVul) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.SysVul)
            this.SysVul = obj;
        }

        if (params.WebVul) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.WebVul)
            this.WebVul = obj;
        }

        if (params.EmergencyVul) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.EmergencyVul)
            this.EmergencyVul = obj;
        }

        if (params.BaseLine) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.BaseLine)
            this.BaseLine = obj;
        }

        if (params.AttackLogs) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.AttackLogs)
            this.AttackLogs = obj;
        }
        this.EffectMachineCount = 'EffectMachineCount' in params ? params.EffectMachineCount : null;
        this.EventsCount = 'EventsCount' in params ? params.EventsCount : null;

        if (params.WindowVul) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.WindowVul)
            this.WindowVul = obj;
        }

        if (params.LinuxVul) {
            let obj = new SecurityEventInfo();
            obj.deserialize(params.LinuxVul)
            this.LinuxVul = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Description of key-value pair filter, which is used for conditional filtering queries. For example, filter by ID, name, and status.

If there are multiple Filters, the logical relationship between them is AND.
If there are multiple Values in the same Filter, the logical relationship between the Values under the same Filter is OR.
 * @class
 */
class Filters extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of filter key
         * @type {string || null}
         */
        this.Name = null;

        /**
         * One or more filter values
         * @type {Array.<string> || null}
         */
        this.Values = null;

        /**
         * Whether to use fuzzy match. It will be handled by the front-end and can be ignored.
         * @type {boolean || null}
         */
        this.ExactMatch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Values = 'Values' in params ? params.Values : null;
        this.ExactMatch = 'ExactMatch' in params ? params.ExactMatch : null;

    }
}

/**
 * DescribeAssetWebServiceInfoList request structure.
 * @class
 */
class DescribeAssetWebServiceInfoListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query the information on the host with the specified QUUID
         * @type {string || null}
         */
        this.Quuid = null;

        /**
         * Filter criteria
<li>User - string - required: no - running user</li>
<li>Name - string - required: no - Web service name:</li>
1:Tomcat
2:Apache
3:Nginx
4:WebLogic
5:Websphere
6:JBoss
7:WildFly
8:Jetty
9:IHS
10:Tengine</li>
<li>OsType - string - required: no - Windows/Linux</li>
<li>Os -String required: no - operating system (the value of DescribeMachineOsList API)</li>
         * @type {Array.<AssetFilters> || null}
         */
        this.Filters = null;

        /**
         * Offset, which is 0 by default.
<li>IpOrAlias - String - required: no - filter by host IP or alias</li>
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of items to be returned. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Sorting method: asc for ascending order or desc for descending order
         * @type {string || null}
         */
        this.Order = null;

        /**
         * Optional sorting method: [FirstTime|ProcessCount]
         * @type {string || null}
         */
        this.By = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Quuid = 'Quuid' in params ? params.Quuid : null;

        if (params.Filters) {
            this.Filters = new Array();
            for (let z in params.Filters) {
                let obj = new AssetFilters();
                obj.deserialize(params.Filters[z]);
                this.Filters.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Order = 'Order' in params ? params.Order : null;
        this.By = 'By' in params ? params.By : null;

    }
}

/**
 * CreateSearchLog request structure.
 * @class
 */
class CreateSearchLogRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search by content
         * @type {string || null}
         */
        this.SearchContent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SearchContent = 'SearchContent' in params ? params.SearchContent : null;

    }
}

/**
 * DescribeSearchTemplates request structure.
 * @class
 */
class DescribeSearchTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset, which is 0 by default.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Quantity of returns. It is 10 by default, and the maximum value is 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * CancelIgnoreVul request structure.
 * @class
 */
class CancelIgnoreVulRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Vulnerability event ID string (multiple entries are separated by comma)
         * @type {string || null}
         */
        this.EventIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventIds = 'EventIds' in params ? params.EventIds : null;

    }
}

/**
 * ExportAssetUserList response structure.
 * @class
 */
class ExportAssetUserListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of asynchronous download task. It is used together with ExportTasks API.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

module.exports = {
    ExportBashEventsRequest: ExportBashEventsRequest,
    DescribeSearchTemplatesResponse: DescribeSearchTemplatesResponse,
    ModifyJavaMemShellPluginSwitchResponse: ModifyJavaMemShellPluginSwitchResponse,
    ExportReverseShellEventsResponse: ExportReverseShellEventsResponse,
    DescribeBaselineTopResponse: DescribeBaselineTopResponse,
    AlarmInfo: AlarmInfo,
    DescribeLogHistogramRequest: DescribeLogHistogramRequest,
    ModifyWarningSettingResponse: ModifyWarningSettingResponse,
    DescribeAssetWebServiceInfoListResponse: DescribeAssetWebServiceInfoListResponse,
    ModifyVulDefenceEventStatusRequest: ModifyVulDefenceEventStatusRequest,
    DescribeAssetAppProcessListResponse: DescribeAssetAppProcessListResponse,
    ModifyWebHookPolicyRequest: ModifyWebHookPolicyRequest,
    DescribeBashPoliciesRequest: DescribeBashPoliciesRequest,
    DescribeLoginWhiteHostListRequest: DescribeLoginWhiteHostListRequest,
    ExportRansomDefenseBackupListResponse: ExportRansomDefenseBackupListResponse,
    CKafkaTopicInfo: CKafkaTopicInfo,
    DeleteWebHookPolicyResponse: DeleteWebHookPolicyResponse,
    DescribeAssetAppCountResponse: DescribeAssetAppCountResponse,
    DescribeAttackTopResponse: DescribeAttackTopResponse,
    ModifyLicenseOrderRequest: ModifyLicenseOrderRequest,
    RuleInfo: RuleInfo,
    DeleteBaselineStrategyResponse: DeleteBaselineStrategyResponse,
    ModifyWebHookRuleRequest: ModifyWebHookRuleRequest,
    MachineLicenseDetail: MachineLicenseDetail,
    DescribeBashEventsInfoRequest: DescribeBashEventsInfoRequest,
    ExportAssetDatabaseListRequest: ExportAssetDatabaseListRequest,
    HostLoginWhiteObj: HostLoginWhiteObj,
    ClearLocalStorageResponse: ClearLocalStorageResponse,
    CreateNetAttackWhiteListRequest: CreateNetAttackWhiteListRequest,
    DescribeUndoVulCountsResponse: DescribeUndoVulCountsResponse,
    DescribeBaselineScanScheduleResponse: DescribeBaselineScanScheduleResponse,
    MaliciousRequestWhiteListInfo: MaliciousRequestWhiteListInfo,
    DeleteBashEventsResponse: DeleteBashEventsResponse,
    DescribeAssetProcessInfoListRequest: DescribeAssetProcessInfoListRequest,
    VulEmergentMsgInfo: VulEmergentMsgInfo,
    SearchLogResponse: SearchLogResponse,
    AssetNetworkCardInfo: AssetNetworkCardInfo,
    DescribeAssetWebFrameListRequest: DescribeAssetWebFrameListRequest,
    DescribeMonthInspectionReportResponse: DescribeMonthInspectionReportResponse,
    DescribeBaselineHostTopResponse: DescribeBaselineHostTopResponse,
    HostDesc: HostDesc,
    DeleteBashRulesResponse: DeleteBashRulesResponse,
    DescribeDirectConnectInstallCommandResponse: DescribeDirectConnectInstallCommandResponse,
    ModifyFileTamperEventsRequest: ModifyFileTamperEventsRequest,
    RetryVulFixResponse: RetryVulFixResponse,
    ExportVulListResponse: ExportVulListResponse,
    AssetMachineBaseInfo: AssetMachineBaseInfo,
    ExportRansomDefenseMachineListRequest: ExportRansomDefenseMachineListRequest,
    DescribeHistoryServiceResponse: DescribeHistoryServiceResponse,
    BaselineEffectHost: BaselineEffectHost,
    DescribeRiskProcessEventsRequest: DescribeRiskProcessEventsRequest,
    DescribeAssetTypesResponse: DescribeAssetTypesResponse,
    DescribeScreenEmergentMsgRequest: DescribeScreenEmergentMsgRequest,
    ModifyAutoOpenProVersionConfigResponse: ModifyAutoOpenProVersionConfigResponse,
    DescribeVulInfoCvssResponse: DescribeVulInfoCvssResponse,
    DescribeBaselineStrategyDetailRequest: DescribeBaselineStrategyDetailRequest,
    ModifyLicenseBindsRequest: ModifyLicenseBindsRequest,
    MalWareList: MalWareList,
    WebHookPolicy: WebHookPolicy,
    DescribeAssetUserInfoResponse: DescribeAssetUserInfoResponse,
    DescribeRansomDefenseStrategyListRequest: DescribeRansomDefenseStrategyListRequest,
    DescribeMachineClearHistoryRequest: DescribeMachineClearHistoryRequest,
    DescribeServersAndRiskAndFirstInfoResponse: DescribeServersAndRiskAndFirstInfoResponse,
    ModifyMalwareWhiteListRequest: ModifyMalwareWhiteListRequest,
    DescribeSecurityProtectionStatResponse: DescribeSecurityProtectionStatResponse,
    DescribeBaselineEffectHostListResponse: DescribeBaselineEffectHostListResponse,
    DescribeJavaMemShellPluginInfoRequest: DescribeJavaMemShellPluginInfoRequest,
    DescribeMachineFileTamperRulesRequest: DescribeMachineFileTamperRulesRequest,
    ExportVulDefenceEventResponse: ExportVulDefenceEventResponse,
    SetLocalStorageItemRequest: SetLocalStorageItemRequest,
    ExportRansomDefenseMachineListResponse: ExportRansomDefenseMachineListResponse,
    VulDefenceRangeDetail: VulDefenceRangeDetail,
    DescribeFileTamperRuleCountRequest: DescribeFileTamperRuleCountRequest,
    DescribeBaselineBasicInfoRequest: DescribeBaselineBasicInfoRequest,
    DescribeDefenceEventDetailRequest: DescribeDefenceEventDetailRequest,
    DescribeMachineGeneralResponse: DescribeMachineGeneralResponse,
    DescribeMachineClearHistoryResponse: DescribeMachineClearHistoryResponse,
    DescribeProVersionInfoRequest: DescribeProVersionInfoRequest,
    RemoveMachineResponse: RemoveMachineResponse,
    DescribeVulCountByDatesRequest: DescribeVulCountByDatesRequest,
    EditReverseShellRulesRequest: EditReverseShellRulesRequest,
    DescribeAssetWebServiceCountRequest: DescribeAssetWebServiceCountRequest,
    Broadcasts: Broadcasts,
    CreateLicenseOrderResponse: CreateLicenseOrderResponse,
    ModifyBashPolicyStatusRequest: ModifyBashPolicyStatusRequest,
    DescribeAssetWebLocationPathListRequest: DescribeAssetWebLocationPathListRequest,
    BroadcastInfo: BroadcastInfo,
    DefendAttackLog: DefendAttackLog,
    DeleteRiskDnsEventRequest: DeleteRiskDnsEventRequest,
    PrivilegeEventInfo: PrivilegeEventInfo,
    RansomDefenseRollbackResponse: RansomDefenseRollbackResponse,
    ExportAssetSystemPackageListRequest: ExportAssetSystemPackageListRequest,
    ExportTasksRequest: ExportTasksRequest,
    DescribeNetAttackWhiteListRequest: DescribeNetAttackWhiteListRequest,
    DescribeOverviewStatisticsResponse: DescribeOverviewStatisticsResponse,
    ModifyMalwareTimingScanSettingsRequest: ModifyMalwareTimingScanSettingsRequest,
    DescribeAssetTotalCountRequest: DescribeAssetTotalCountRequest,
    DescribeWebHookRulesResponse: DescribeWebHookRulesResponse,
    VulDetailInfo: VulDetailInfo,
    VulLevelCountInfo: VulLevelCountInfo,
    ExportBashEventsResponse: ExportBashEventsResponse,
    DescribeMonthInspectionReportRequest: DescribeMonthInspectionReportRequest,
    DescribeDirectConnectInstallCommandRequest: DescribeDirectConnectInstallCommandRequest,
    VertexInfo: VertexInfo,
    DescribeNetAttackSettingResponse: DescribeNetAttackSettingResponse,
    ReverseShellRule: ReverseShellRule,
    DescribeAESKeyResponse: DescribeAESKeyResponse,
    DescribeBashRulesResponse: DescribeBashRulesResponse,
    DescribeAvailableExpertServiceDetailResponse: DescribeAvailableExpertServiceDetailResponse,
    DescribeLogStorageConfigRequest: DescribeLogStorageConfigRequest,
    ExportAssetWebLocationListResponse: ExportAssetWebLocationListResponse,
    ScreenBroadcasts: ScreenBroadcasts,
    ChangeRuleEventsIgnoreStatusRequest: ChangeRuleEventsIgnoreStatusRequest,
    AssetType: AssetType,
    ModifyWebHookReceiverResponse: ModifyWebHookReceiverResponse,
    OpenPortStatistics: OpenPortStatistics,
    DescribeRansomDefenseMachineListRequest: DescribeRansomDefenseMachineListRequest,
    ExportAssetCoreModuleListRequest: ExportAssetCoreModuleListRequest,
    DescribeComponentStatisticsResponse: DescribeComponentStatisticsResponse,
    ModifyNetAttackWhiteListResponse: ModifyNetAttackWhiteListResponse,
    DescribeMachineRegionsRequest: DescribeMachineRegionsRequest,
    DescribeAttackLogsRequest: DescribeAttackLogsRequest,
    ModifyMachineAutoClearConfigRequest: ModifyMachineAutoClearConfigRequest,
    ModifyEventAttackStatusRequest: ModifyEventAttackStatusRequest,
    DescribeVulLevelCountResponse: DescribeVulLevelCountResponse,
    BruteAttackRule: BruteAttackRule,
    DescribeVersionStatisticsResponse: DescribeVersionStatisticsResponse,
    DescribeAvailableExpertServiceDetailRequest: DescribeAvailableExpertServiceDetailRequest,
    DescribeMachineFileTamperRulesResponse: DescribeMachineFileTamperRulesResponse,
    DeleteLogExportRequest: DeleteLogExportRequest,
    DescribeUsualLoginPlacesResponse: DescribeUsualLoginPlacesResponse,
    DescribeAttackEventsRequest: DescribeAttackEventsRequest,
    DescribeRiskDnsListRequest: DescribeRiskDnsListRequest,
    CreateWhiteListOrderRequest: CreateWhiteListOrderRequest,
    DescribeBaselineBasicInfoResponse: DescribeBaselineBasicInfoResponse,
    DescribeRansomDefenseStrategyDetailResponse: DescribeRansomDefenseStrategyDetailResponse,
    EditBashRulesResponse: EditBashRulesResponse,
    ModifyBruteAttackRulesResponse: ModifyBruteAttackRulesResponse,
    DescribeRansomDefenseBackupListRequest: DescribeRansomDefenseBackupListRequest,
    ModifyFileTamperRuleStatusRequest: ModifyFileTamperRuleStatusRequest,
    ScanVulResponse: ScanVulResponse,
    DeleteNonlocalLoginPlacesRequest: DeleteNonlocalLoginPlacesRequest,
    DeleteMalwareWhiteListResponse: DeleteMalwareWhiteListResponse,
    DescribeOverviewStatisticsRequest: DescribeOverviewStatisticsRequest,
    DeleteScanTaskRequest: DeleteScanTaskRequest,
    DescribeRiskBatchStatusResponse: DescribeRiskBatchStatusResponse,
    DescribeAlarmIncidentNodesRequest: DescribeAlarmIncidentNodesRequest,
    DescribeAssetWebAppPluginListRequest: DescribeAssetWebAppPluginListRequest,
    DescribeRansomDefenseMachineListResponse: DescribeRansomDefenseMachineListResponse,
    DescribeTagMachinesRequest: DescribeTagMachinesRequest,
    DescribeScreenAttackHotspotRequest: DescribeScreenAttackHotspotRequest,
    ScanVulAgainRequest: ScanVulAgainRequest,
    DeleteSearchTemplateRequest: DeleteSearchTemplateRequest,
    ExportJavaMemShellPluginsResponse: ExportJavaMemShellPluginsResponse,
    DescribeAssetTotalCountResponse: DescribeAssetTotalCountResponse,
    ExportNonlocalLoginPlacesRequest: ExportNonlocalLoginPlacesRequest,
    DescribeTagsResponse: DescribeTagsResponse,
    DescribeRansomDefenseTrendRequest: DescribeRansomDefenseTrendRequest,
    DescribeLicenseListResponse: DescribeLicenseListResponse,
    DescribeJavaMemShellListResponse: DescribeJavaMemShellListResponse,
    DescribeVulOverviewRequest: DescribeVulOverviewRequest,
    DescribeMachinesSimpleResponse: DescribeMachinesSimpleResponse,
    DescribeNetAttackSettingRequest: DescribeNetAttackSettingRequest,
    HostLoginList: HostLoginList,
    DescribeScreenRiskAssetsTopRequest: DescribeScreenRiskAssetsTopRequest,
    DeletePrivilegeEventsRequest: DeletePrivilegeEventsRequest,
    AssetMachineDetail: AssetMachineDetail,
    ModifyNetAttackWhiteListRequest: ModifyNetAttackWhiteListRequest,
    DescribeVulDefenceSettingRequest: DescribeVulDefenceSettingRequest,
    DescribeTrialReportRequest: DescribeTrialReportRequest,
    IgnoreRuleEffectHostInfo: IgnoreRuleEffectHostInfo,
    DescribeFileTamperEventsRequest: DescribeFileTamperEventsRequest,
    DescribeScreenMachineRegionsResponse: DescribeScreenMachineRegionsResponse,
    ExportVulDefencePluginEventResponse: ExportVulDefencePluginEventResponse,
    ExportAssetMachineDetailRequest: ExportAssetMachineDetailRequest,
    DescribeBanModeRequest: DescribeBanModeRequest,
    StopAssetScanRequest: StopAssetScanRequest,
    DescribeSecurityEventStatRequest: DescribeSecurityEventStatRequest,
    DescribeESAggregationsResponse: DescribeESAggregationsResponse,
    ExportVulInfoResponse: ExportVulInfoResponse,
    EmergencyVul: EmergencyVul,
    ExportAssetRecentMachineInfoRequest: ExportAssetRecentMachineInfoRequest,
    ExportReverseShellEventsRequest: ExportReverseShellEventsRequest,
    BashEventNew: BashEventNew,
    DeleteLoginWhiteListResponse: DeleteLoginWhiteListResponse,
    DescribeVertexDetailResponse: DescribeVertexDetailResponse,
    DeleteRiskDnsEventResponse: DeleteRiskDnsEventResponse,
    DescribeAttackLogsResponse: DescribeAttackLogsResponse,
    ModifyLoginWhiteRecordRequest: ModifyLoginWhiteRecordRequest,
    ModifyRiskDnsPolicyResponse: ModifyRiskDnsPolicyResponse,
    DescribeScanTaskDetailsRequest: DescribeScanTaskDetailsRequest,
    ProductStatusInfo: ProductStatusInfo,
    DeleteMalwaresResponse: DeleteMalwaresResponse,
    ExportRiskDnsEventListResponse: ExportRiskDnsEventListResponse,
    DescribeAssetInitServiceListRequest: DescribeAssetInitServiceListRequest,
    ScanVulAgainResponse: ScanVulAgainResponse,
    DescribeWebHookReceiverUsageRequest: DescribeWebHookReceiverUsageRequest,
    DescribeAssetUserKeyListRequest: DescribeAssetUserKeyListRequest,
    VulTopInfo: VulTopInfo,
    CKafkaRouteInfo: CKafkaRouteInfo,
    SeparateMalwaresResponse: SeparateMalwaresResponse,
    DescribeTagsRequest: DescribeTagsRequest,
    ExportAssetJarListResponse: ExportAssetJarListResponse,
    ExportVulEffectHostListRequest: ExportVulEffectHostListRequest,
    DescribeNetAttackWhiteListResponse: DescribeNetAttackWhiteListResponse,
    CheckBashPolicyParamsRequest: CheckBashPolicyParamsRequest,
    DescribeStrategyExistRequest: DescribeStrategyExistRequest,
    DescribeSecurityDynamicsRequest: DescribeSecurityDynamicsRequest,
    CheckBashRuleParamsRequest: CheckBashRuleParamsRequest,
    DescribeRiskDnsEventInfoRequest: DescribeRiskDnsEventInfoRequest,
    DescribeIgnoreBaselineRuleRequest: DescribeIgnoreBaselineRuleRequest,
    DescribeAssetTypeTopRequest: DescribeAssetTypeTopRequest,
    CheckFileTamperRuleResponse: CheckFileTamperRuleResponse,
    ExportNonlocalLoginPlacesResponse: ExportNonlocalLoginPlacesResponse,
    DeleteMaliciousRequestWhiteListRequest: DeleteMaliciousRequestWhiteListRequest,
    DescribeAssetJarListResponse: DescribeAssetJarListResponse,
    ExportAssetProcessInfoListResponse: ExportAssetProcessInfoListResponse,
    ExportMaliciousRequestsRequest: ExportMaliciousRequestsRequest,
    DeleteNetAttackWhiteListResponse: DeleteNetAttackWhiteListResponse,
    DescribeWebHookPolicyResponse: DescribeWebHookPolicyResponse,
    BanWhiteList: BanWhiteList,
    SetLocalStorageItemResponse: SetLocalStorageItemResponse,
    ExportBashEventsNewRequest: ExportBashEventsNewRequest,
    AssetJarDetail: AssetJarDetail,
    ModifyFileTamperRuleResponse: ModifyFileTamperRuleResponse,
    StartBaselineDetectResponse: StartBaselineDetectResponse,
    ReverseShellEventInfo: ReverseShellEventInfo,
    ExportVulDetectionReportRequest: ExportVulDetectionReportRequest,
    ModifyWarningHostConfigRequest: ModifyWarningHostConfigRequest,
    ExportMalwaresResponse: ExportMalwaresResponse,
    DescribeScanVulSettingRequest: DescribeScanVulSettingRequest,
    DescribeMalwareRiskWarningRequest: DescribeMalwareRiskWarningRequest,
    KeyValueInfo: KeyValueInfo,
    StartBaselineDetectRequest: StartBaselineDetectRequest,
    DescribeVulStoreListRequest: DescribeVulStoreListRequest,
    EditPrivilegeRulesRequest: EditPrivilegeRulesRequest,
    DescribeAssetDiskListRequest: DescribeAssetDiskListRequest,
    ScreenAttackHotspot: ScreenAttackHotspot,
    DescribeClientExceptionRequest: DescribeClientExceptionRequest,
    DescribeAssetPlanTaskListResponse: DescribeAssetPlanTaskListResponse,
    DescribeBaselineRuleRequest: DescribeBaselineRuleRequest,
    ExportAssetPortInfoListRequest: ExportAssetPortInfoListRequest,
    DescribeHistoryAccountsRequest: DescribeHistoryAccountsRequest,
    DescribeAssetMachineDetailRequest: DescribeAssetMachineDetailRequest,
    CancelIgnoreVulResponse: CancelIgnoreVulResponse,
    DescribeSecurityBroadcastInfoRequest: DescribeSecurityBroadcastInfoRequest,
    IgnoreImpactedHostsResponse: IgnoreImpactedHostsResponse,
    DescribeCanFixVulMachineRequest: DescribeCanFixVulMachineRequest,
    DescribeRansomDefenseStrategyMachinesResponse: DescribeRansomDefenseStrategyMachinesResponse,
    ExportRansomDefenseEventsListResponse: ExportRansomDefenseEventsListResponse,
    DescribeAssetMachineDetailResponse: DescribeAssetMachineDetailResponse,
    DescribeRansomDefenseStrategyListResponse: DescribeRansomDefenseStrategyListResponse,
    DescribeAttackTrendsRequest: DescribeAttackTrendsRequest,
    DeleteNetAttackWhiteListRequest: DeleteNetAttackWhiteListRequest,
    HistoryAccount: HistoryAccount,
    DescribeStrategyExistResponse: DescribeStrategyExistResponse,
    DeleteReverseShellEventsRequest: DeleteReverseShellEventsRequest,
    DeleteBashPoliciesRequest: DeleteBashPoliciesRequest,
    ExportAssetAppListResponse: ExportAssetAppListResponse,
    DescribeLogTypeRequest: DescribeLogTypeRequest,
    DescribeVulTopResponse: DescribeVulTopResponse,
    TaskStatus: TaskStatus,
    DescribeMachineOsListResponse: DescribeMachineOsListResponse,
    DescribeAssetWebServiceProcessListResponse: DescribeAssetWebServiceProcessListResponse,
    ChangeStrategyEnableStatusResponse: ChangeStrategyEnableStatusResponse,
    ExportRansomDefenseStrategyListResponse: ExportRansomDefenseStrategyListResponse,
    IgnoreImpactedHostsRequest: IgnoreImpactedHostsRequest,
    SearchLogRequest: SearchLogRequest,
    DescribeBaselineWeakPasswordListRequest: DescribeBaselineWeakPasswordListRequest,
    VulDefenceEvent: VulDefenceEvent,
    ModifyFileTamperRuleRequest: ModifyFileTamperRuleRequest,
    ExportBaselineFixListRequest: ExportBaselineFixListRequest,
    AssetUserDetail: AssetUserDetail,
    DescribeAssetPortCountRequest: DescribeAssetPortCountRequest,
    ModifyWebHookPolicyResponse: ModifyWebHookPolicyResponse,
    DescribeFileTamperEventsResponse: DescribeFileTamperEventsResponse,
    DescribeVulLabelsResponse: DescribeVulLabelsResponse,
    DescribeMachinesRequest: DescribeMachinesRequest,
    DescribeRansomDefenseBackupListResponse: DescribeRansomDefenseBackupListResponse,
    DescribeVulEffectHostListRequest: DescribeVulEffectHostListRequest,
    DeliverTypeDetails: DeliverTypeDetails,
    ModifyNetAttackSettingResponse: ModifyNetAttackSettingResponse,
    AssetWebAppPluginInfo: AssetWebAppPluginInfo,
    DeletePrivilegeRulesRequest: DeletePrivilegeRulesRequest,
    ScanTaskDetails: ScanTaskDetails,
    DescribeLicenseBindScheduleResponse: DescribeLicenseBindScheduleResponse,
    DescribeMalwareInfoRequest: DescribeMalwareInfoRequest,
    DescribeVersionStatisticsRequest: DescribeVersionStatisticsRequest,
    DescribeLogTypeResponse: DescribeLogTypeResponse,
    ModifyRiskDnsPolicyStatusResponse: ModifyRiskDnsPolicyStatusResponse,
    ExportPrivilegeEventsResponse: ExportPrivilegeEventsResponse,
    ExportAssetRecentMachineInfoResponse: ExportAssetRecentMachineInfoResponse,
    DescribeMachineRegionListRequest: DescribeMachineRegionListRequest,
    UsualPlace: UsualPlace,
    ModifyBaselinePolicyResponse: ModifyBaselinePolicyResponse,
    MachineSimple: MachineSimple,
    DescribeReverseShellEventsRequest: DescribeReverseShellEventsRequest,
    DescribeCanNotSeparateMachineResponse: DescribeCanNotSeparateMachineResponse,
    ExportAssetPortInfoListResponse: ExportAssetPortInfoListResponse,
    FileTamperRuleInfo: FileTamperRuleInfo,
    DescribeEventByTableResponse: DescribeEventByTableResponse,
    ModifyLogStorageConfigRequest: ModifyLogStorageConfigRequest,
    DescribeAttackVulTypeListRequest: DescribeAttackVulTypeListRequest,
    AssetLoadDetail: AssetLoadDetail,
    DescribeLogStorageStatisticRequest: DescribeLogStorageStatisticRequest,
    DeleteBaselinePolicyRequest: DeleteBaselinePolicyRequest,
    SetLocalStorageExpireRequest: SetLocalStorageExpireRequest,
    ExportAssetInitServiceListRequest: ExportAssetInitServiceListRequest,
    DeleteWebHookReceiverRequest: DeleteWebHookReceiverRequest,
    DescribeAssetRecentMachineInfoRequest: DescribeAssetRecentMachineInfoRequest,
    CheckBashRuleParamsResponse: CheckBashRuleParamsResponse,
    DeleteLicenseRecordRequest: DeleteLicenseRecordRequest,
    ExportBaselineListRequest: ExportBaselineListRequest,
    DescribeAssetWebLocationPathListResponse: DescribeAssetWebLocationPathListResponse,
    RansomDefenseStrategyMachineDetail: RansomDefenseStrategyMachineDetail,
    ExportIgnoreBaselineRuleResponse: ExportIgnoreBaselineRuleResponse,
    BruteAttackRuleList: BruteAttackRuleList,
    ExportFileTamperEventsResponse: ExportFileTamperEventsResponse,
    DescribeBanStatusResponse: DescribeBanStatusResponse,
    DescribeVulListRequest: DescribeVulListRequest,
    DescribeLicenseBindListResponse: DescribeLicenseBindListResponse,
    BaselineInfo: BaselineInfo,
    DescribeWebHookReceiverUsageResponse: DescribeWebHookReceiverUsageResponse,
    AssetAppBaseInfo: AssetAppBaseInfo,
    DescribeJavaMemShellInfoRequest: DescribeJavaMemShellInfoRequest,
    DescribePrivilegeRulesRequest: DescribePrivilegeRulesRequest,
    ExportAssetAppListRequest: ExportAssetAppListRequest,
    TestWebHookRuleRequest: TestWebHookRuleRequest,
    JavaMemShellInfo: JavaMemShellInfo,
    DescribeAssetSystemPackageListResponse: DescribeAssetSystemPackageListResponse,
    ExportAssetWebFrameListResponse: ExportAssetWebFrameListResponse,
    CheckBashPolicyParamsResponse: CheckBashPolicyParamsResponse,
    DescribeClientExceptionResponse: DescribeClientExceptionResponse,
    DescribeAssetMachineListResponse: DescribeAssetMachineListResponse,
    VersionWhiteConfig: VersionWhiteConfig,
    DescribeBaselineDetailRequest: DescribeBaselineDetailRequest,
    NetAttackEventInfo: NetAttackEventInfo,
    GetLocalStorageItemResponse: GetLocalStorageItemResponse,
    DescribeScreenDefenseTrendsRequest: DescribeScreenDefenseTrendsRequest,
    LogStorageRecord: LogStorageRecord,
    DescribeBruteAttackListResponse: DescribeBruteAttackListResponse,
    DescribeAssetInfoRequest: DescribeAssetInfoRequest,
    DescribeJavaMemShellPluginListRequest: DescribeJavaMemShellPluginListRequest,
    CanFixVulInfo: CanFixVulInfo,
    DescribeWebHookPolicyRequest: DescribeWebHookPolicyRequest,
    EditReverseShellRulesResponse: EditReverseShellRulesResponse,
    VulOverview: VulOverview,
    DescribeAssetUserKeyListResponse: DescribeAssetUserKeyListResponse,
    DescribeVulLabelsRequest: DescribeVulLabelsRequest,
    DescribeAssetAppListRequest: DescribeAssetAppListRequest,
    UntrustMalwaresResponse: UntrustMalwaresResponse,
    ZoneInfo: ZoneInfo,
    DescribeExpertServiceListResponse: DescribeExpertServiceListResponse,
    DescribeAccountStatisticsResponse: DescribeAccountStatisticsResponse,
    DescribeBashEventsInfoNewRequest: DescribeBashEventsInfoNewRequest,
    ScreenTrendsChart: ScreenTrendsChart,
    ModifyLoginWhiteInfoResponse: ModifyLoginWhiteInfoResponse,
    DescribeBaselineRuleResponse: DescribeBaselineRuleResponse,
    AttackSourceNode: AttackSourceNode,
    DescribeRiskDnsPolicyListRequest: DescribeRiskDnsPolicyListRequest,
    DeleteMaliciousRequestsResponse: DeleteMaliciousRequestsResponse,
    DescribeWebHookReceiverRequest: DescribeWebHookReceiverRequest,
    VulStoreListInfo: VulStoreListInfo,
    DescribeScreenEventsCntResponse: DescribeScreenEventsCntResponse,
    CreateIncidentBacktrackingRequest: CreateIncidentBacktrackingRequest,
    DescribeVulDefencePluginStatusRequest: DescribeVulDefencePluginStatusRequest,
    DescribeBashEventsInfoNewResponse: DescribeBashEventsInfoNewResponse,
    GetLocalStorageItemRequest: GetLocalStorageItemRequest,
    WebHookEventKv: WebHookEventKv,
    ExportBruteAttacksRequest: ExportBruteAttacksRequest,
    DeleteMachineResponse: DeleteMachineResponse,
    RansomDefenseEvent: RansomDefenseEvent,
    DeleteMalwareWhiteListRequest: DeleteMalwareWhiteListRequest,
    LoginWhiteCombinedInfo: LoginWhiteCombinedInfo,
    SetLocalStorageExpireResponse: SetLocalStorageExpireResponse,
    WebHookReceiver: WebHookReceiver,
    DescribeAttackSourceResponse: DescribeAttackSourceResponse,
    DescribeAssetTypeTopResponse: DescribeAssetTypeTopResponse,
    DescribeVulDefencePluginExceptionCountRequest: DescribeVulDefencePluginExceptionCountRequest,
    DescribeLogIndexRequest: DescribeLogIndexRequest,
    TagMachine: TagMachine,
    DescribeAssetCoreModuleInfoResponse: DescribeAssetCoreModuleInfoResponse,
    LicenseBindTaskDetail: LicenseBindTaskDetail,
    DescribeAssetEnvListRequest: DescribeAssetEnvListRequest,
    Tag: Tag,
    StopNoticeBanTipsRequest: StopNoticeBanTipsRequest,
    ScreenProtection: ScreenProtection,
    DescribeScanMalwareScheduleRequest: DescribeScanMalwareScheduleRequest,
    BaselineDetectParam: BaselineDetectParam,
    DescribeBashEventsResponse: DescribeBashEventsResponse,
    ValueInfo: ValueInfo,
    ModifyVulDefenceSettingResponse: ModifyVulDefenceSettingResponse,
    DescribeEventByTableRequest: DescribeEventByTableRequest,
    DescribeTrialReportResponse: DescribeTrialReportResponse,
    DescribeBashEventsRequest: DescribeBashEventsRequest,
    DeleteMachineClearHistoryRequest: DeleteMachineClearHistoryRequest,
    DescribeLogHistogramResponse: DescribeLogHistogramResponse,
    DescribeUsersConfigRequest: DescribeUsersConfigRequest,
    DeleteMachineRequest: DeleteMachineRequest,
    DescribeAssetWebLocationListResponse: DescribeAssetWebLocationListResponse,
    DescribeAssetDiskListResponse: DescribeAssetDiskListResponse,
    ExportAssetPlanTaskListRequest: ExportAssetPlanTaskListRequest,
    RecordInfo: RecordInfo,
    DescribeAssetHostTotalCountResponse: DescribeAssetHostTotalCountResponse,
    DescribeMachineSnapshotRequest: DescribeMachineSnapshotRequest,
    StopAssetScanResponse: StopAssetScanResponse,
    DescribeAssetJarListRequest: DescribeAssetJarListRequest,
    LoginWhiteLists: LoginWhiteLists,
    TrustMalwaresRequest: TrustMalwaresRequest,
    AssetKeyVal: AssetKeyVal,
    AssetWebLocationInfo: AssetWebLocationInfo,
    ChangeRuleEventsIgnoreStatusResponse: ChangeRuleEventsIgnoreStatusResponse,
    DeleteWebHookRuleResponse: DeleteWebHookRuleResponse,
    SeparateMalwaresRequest: SeparateMalwaresRequest,
    AssetDatabaseBaseInfo: AssetDatabaseBaseInfo,
    LicenseOrder: LicenseOrder,
    DeletePrivilegeRulesResponse: DeletePrivilegeRulesResponse,
    CreateMalwareWhiteListResponse: CreateMalwareWhiteListResponse,
    CreateWhiteListOrderResponse: CreateWhiteListOrderResponse,
    ModifyBashPolicyStatusResponse: ModifyBashPolicyStatusResponse,
    CreateEmergencyVulScanResponse: CreateEmergencyVulScanResponse,
    DescribeTagMachinesResponse: DescribeTagMachinesResponse,
    DescribeHotVulTopResponse: DescribeHotVulTopResponse,
    DescribeRansomDefenseMachineStrategyInfoRequest: DescribeRansomDefenseMachineStrategyInfoRequest,
    DescribeAssetCoreModuleInfoRequest: DescribeAssetCoreModuleInfoRequest,
    DescribeProductStatusResponse: DescribeProductStatusResponse,
    DescribeIndexListResponse: DescribeIndexListResponse,
    ModifyJavaMemShellPluginSwitchRequest: ModifyJavaMemShellPluginSwitchRequest,
    DescribeIgnoreHostAndItemConfigResponse: DescribeIgnoreHostAndItemConfigResponse,
    RemoveLocalStorageItemResponse: RemoveLocalStorageItemResponse,
    DescribeFileTamperRuleInfoResponse: DescribeFileTamperRuleInfoResponse,
    DescribeSafeInfoRequest: DescribeSafeInfoRequest,
    DescribeVdbAndPocInfoResponse: DescribeVdbAndPocInfoResponse,
    DescribeAttackEventsResponse: DescribeAttackEventsResponse,
    DescribeRansomDefenseMachineStrategyInfoResponse: DescribeRansomDefenseMachineStrategyInfoResponse,
    DescribeReverseShellEventInfoResponse: DescribeReverseShellEventInfoResponse,
    ExportJavaMemShellPluginsRequest: ExportJavaMemShellPluginsRequest,
    DescribeBanWhiteListResponse: DescribeBanWhiteListResponse,
    CreateVulFixResponse: CreateVulFixResponse,
    DescribeOpenPortStatisticsResponse: DescribeOpenPortStatisticsResponse,
    ExportRiskDnsEventListRequest: ExportRiskDnsEventListRequest,
    SecurityDynamic: SecurityDynamic,
    DescribeMachineGeneralRequest: DescribeMachineGeneralRequest,
    ExportRiskProcessEventsResponse: ExportRiskProcessEventsResponse,
    DescribeAssetDatabaseCountResponse: DescribeAssetDatabaseCountResponse,
    DescribeMalWareListRequest: DescribeMalWareListRequest,
    DescribeProVersionInfoResponse: DescribeProVersionInfoResponse,
    DeleteTagsResponse: DeleteTagsResponse,
    DescribeSecurityEventsCntRequest: DescribeSecurityEventsCntRequest,
    AssetUserBaseInfo: AssetUserBaseInfo,
    ModifyRiskEventsStatusRequest: ModifyRiskEventsStatusRequest,
    ExportBaselineEffectHostListRequest: ExportBaselineEffectHostListRequest,
    ExportMaliciousRequestsResponse: ExportMaliciousRequestsResponse,
    ScanBaselineRequest: ScanBaselineRequest,
    RansomDefenseRollbackRequest: RansomDefenseRollbackRequest,
    DescribeVulCountByDatesResponse: DescribeVulCountByDatesResponse,
    CreateVulFixTaskQuuids: CreateVulFixTaskQuuids,
    DescribeServersAndRiskAndFirstInfoRequest: DescribeServersAndRiskAndFirstInfoRequest,
    FieldValueRatioInfo: FieldValueRatioInfo,
    DescribeVulDefenceEventRequest: DescribeVulDefenceEventRequest,
    AttackSource: AttackSource,
    DescribeIndexListRequest: DescribeIndexListRequest,
    RetryVulFixRequest: RetryVulFixRequest,
    DescribeRiskDnsEventListRequest: DescribeRiskDnsEventListRequest,
    DescribeLogKafkaDeliverInfoResponse: DescribeLogKafkaDeliverInfoResponse,
    DeleteBashRulesRequest: DeleteBashRulesRequest,
    DescribeVulEffectModulesResponse: DescribeVulEffectModulesResponse,
    ExportRansomDefenseStrategyMachinesRequest: ExportRansomDefenseStrategyMachinesRequest,
    DescribeMalwareWhiteListAffectListResponse: DescribeMalwareWhiteListAffectListResponse,
    VulDefencePluginStatus: VulDefencePluginStatus,
    DescribeRansomDefenseEventsListRequest: DescribeRansomDefenseEventsListRequest,
    RansomDefenseStrategyMachineBackupInfo: RansomDefenseStrategyMachineBackupInfo,
    ExportAssetPlanTaskListResponse: ExportAssetPlanTaskListResponse,
    ExportRansomDefenseBackupListRequest: ExportRansomDefenseBackupListRequest,
    DescribeWarningHostConfigResponse: DescribeWarningHostConfigResponse,
    DescribeABTestConfigRequest: DescribeABTestConfigRequest,
    ModifyRansomDefenseEventsStatusRequest: ModifyRansomDefenseEventsStatusRequest,
    DescribeUsersConfigResponse: DescribeUsersConfigResponse,
    DescribeAttackStatisticsResponse: DescribeAttackStatisticsResponse,
    DescribeRansomDefenseStateRequest: DescribeRansomDefenseStateRequest,
    ExportAssetJarListRequest: ExportAssetJarListRequest,
    CreateVulFixRequest: CreateVulFixRequest,
    CheckFirstScanBaselineResponse: CheckFirstScanBaselineResponse,
    ModifyBanStatusRequest: ModifyBanStatusRequest,
    DescribeBaselineHostTopRequest: DescribeBaselineHostTopRequest,
    DescribeVulDefenceListResponse: DescribeVulDefenceListResponse,
    RemoveLocalStorageItemRequest: RemoveLocalStorageItemRequest,
    CreateBuyBindTaskRequest: CreateBuyBindTaskRequest,
    HostInfo: HostInfo,
    EditPrivilegeRulesResponse: EditPrivilegeRulesResponse,
    DescribeVulHostTopResponse: DescribeVulHostTopResponse,
    SyncMachinesResponse: SyncMachinesResponse,
    TrustMalwaresResponse: TrustMalwaresResponse,
    DescribeHistoryServiceRequest: DescribeHistoryServiceRequest,
    CreateMaliciousRequestWhiteListRequest: CreateMaliciousRequestWhiteListRequest,
    DescribeWarningListRequest: DescribeWarningListRequest,
    SyncAssetScanRequest: SyncAssetScanRequest,
    RecoverMalwaresRequest: RecoverMalwaresRequest,
    DefaultStrategyInfo: DefaultStrategyInfo,
    ExportSecurityTrendsRequest: ExportSecurityTrendsRequest,
    ModifyBanWhiteListRequest: ModifyBanWhiteListRequest,
    DescribeESAggregationsRequest: DescribeESAggregationsRequest,
    BaselineHostTopList: BaselineHostTopList,
    DescribeReverseShellRulesResponse: DescribeReverseShellRulesResponse,
    DeleteWebHookRuleRequest: DeleteWebHookRuleRequest,
    DescribeBruteAttackListRequest: DescribeBruteAttackListRequest,
    DescribeVdbAndPocInfoRequest: DescribeVdbAndPocInfoRequest,
    NetAttackTopInfo: NetAttackTopInfo,
    DescribeVulListResponse: DescribeVulListResponse,
    BaselineHost: BaselineHost,
    KeysLocalStorageRequest: KeysLocalStorageRequest,
    DescribeUndoVulCountsRequest: DescribeUndoVulCountsRequest,
    RemoveMachineRequest: RemoveMachineRequest,
    ModifyLicenseBindsResponse: ModifyLicenseBindsResponse,
    CheckFileTamperRuleRequest: CheckFileTamperRuleRequest,
    DescribeBaselineStrategyListResponse: DescribeBaselineStrategyListResponse,
    CreateRansomDefenseStrategyRequest: CreateRansomDefenseStrategyRequest,
    DeleteLoginWhiteListRequest: DeleteLoginWhiteListRequest,
    DescribeLicenseListRequest: DescribeLicenseListRequest,
    CreateMalwareWhiteListRequest: CreateMalwareWhiteListRequest,
    ExportAssetWebLocationListRequest: ExportAssetWebLocationListRequest,
    DescribeVulOverviewResponse: DescribeVulOverviewResponse,
    AttackSourceEdge: AttackSourceEdge,
    DeleteMaliciousRequestsRequest: DeleteMaliciousRequestsRequest,
    DescribeBanWhiteListRequest: DescribeBanWhiteListRequest,
    VulInfoHostInfo: VulInfoHostInfo,
    DescribeJavaMemShellPluginListResponse: DescribeJavaMemShellPluginListResponse,
    ModifyLogKafkaStateResponse: ModifyLogKafkaStateResponse,
    BaselinePolicy: BaselinePolicy,
    DescribeMalwareRiskOverviewResponse: DescribeMalwareRiskOverviewResponse,
    DeleteMaliciousRequestWhiteListResponse: DeleteMaliciousRequestWhiteListResponse,
    DescribeJavaMemShellListRequest: DescribeJavaMemShellListRequest,
    SwitchBashRulesRequest: SwitchBashRulesRequest,
    DescribeAgentInstallationTokenResponse: DescribeAgentInstallationTokenResponse,
    ScreenEmergentMsg: ScreenEmergentMsg,
    DescribeAssetMachineTagTopResponse: DescribeAssetMachineTagTopResponse,
    CreateScanMalwareSettingResponse: CreateScanMalwareSettingResponse,
    DescribeRansomDefenseTrendResponse: DescribeRansomDefenseTrendResponse,
    CKafkaInstanceInfo: CKafkaInstanceInfo,
    AssetWebFrameBaseInfo: AssetWebFrameBaseInfo,
    ModifyJavaMemShellsStatusRequest: ModifyJavaMemShellsStatusRequest,
    DescribeFileTamperRuleInfoRequest: DescribeFileTamperRuleInfoRequest,
    ExportAttackEventsRequest: ExportAttackEventsRequest,
    ModifyAutoOpenProVersionConfigRequest: ModifyAutoOpenProVersionConfigRequest,
    DescribeLogDeliveryKafkaOptionsRequest: DescribeLogDeliveryKafkaOptionsRequest,
    DescribeAssetWebLocationInfoResponse: DescribeAssetWebLocationInfoResponse,
    CreateIncidentBacktrackingResponse: CreateIncidentBacktrackingResponse,
    RiskProcessEvent: RiskProcessEvent,
    ExportVulListRequest: ExportVulListRequest,
    ModifyBashPolicyResponse: ModifyBashPolicyResponse,
    ExportLicenseDetailRequest: ExportLicenseDetailRequest,
    ScreenNameValue: ScreenNameValue,
    CreateLicenseOrderRequest: CreateLicenseOrderRequest,
    CreateNetAttackWhiteListResponse: CreateNetAttackWhiteListResponse,
    CreateLogExportResponse: CreateLogExportResponse,
    EmergencyResponseInfo: EmergencyResponseInfo,
    ExportVulDefenceListResponse: ExportVulDefenceListResponse,
    ModifyLogKafkaDeliverTypeResponse: ModifyLogKafkaDeliverTypeResponse,
    DescribeBaselineScanScheduleRequest: DescribeBaselineScanScheduleRequest,
    RetryCreateSnapshotRequest: RetryCreateSnapshotRequest,
    ExportVulDefenceEventRequest: ExportVulDefenceEventRequest,
    RansomDefenseStrategyDetail: RansomDefenseStrategyDetail,
    DescribeEmergencyVulListResponse: DescribeEmergencyVulListResponse,
    DestroyOrderResponse: DestroyOrderResponse,
    DescribeAssetUserListResponse: DescribeAssetUserListResponse,
    StandardModeConfig: StandardModeConfig,
    BashEvent: BashEvent,
    DeleteMalwaresRequest: DeleteMalwaresRequest,
    RecoverMalwaresResponse: RecoverMalwaresResponse,
    RegionSet: RegionSet,
    WebHookHostLabel: WebHookHostLabel,
    RansomDefenseStrategy: RansomDefenseStrategy,
    DescribeIgnoreHostAndItemConfigRequest: DescribeIgnoreHostAndItemConfigRequest,
    DescribeReverseShellRulesRequest: DescribeReverseShellRulesRequest,
    DescribeScanVulSettingResponse: DescribeScanVulSettingResponse,
    MachineClearHistory: MachineClearHistory,
    DescribeSecurityBroadcastsResponse: DescribeSecurityBroadcastsResponse,
    DescribeSearchLogsResponse: DescribeSearchLogsResponse,
    AssetFilters: AssetFilters,
    DescribeAssetDatabaseInfoResponse: DescribeAssetDatabaseInfoResponse,
    SyncMachinesRequest: SyncMachinesRequest,
    MonthInspectionReport: MonthInspectionReport,
    SetBashEventsStatusRequest: SetBashEventsStatusRequest,
    ReverseShell: ReverseShell,
    AssetAppProcessInfo: AssetAppProcessInfo,
    NetAttackWhiteRule: NetAttackWhiteRule,
    DescribeWebHookRuleResponse: DescribeWebHookRuleResponse,
    DescribeBaselineStrategyListRequest: DescribeBaselineStrategyListRequest,
    ExportJavaMemShellsRequest: ExportJavaMemShellsRequest,
    DescribeVersionCompareChartResponse: DescribeVersionCompareChartResponse,
    NetAttackEvent: NetAttackEvent,
    DescribeMachineDefenseCntResponse: DescribeMachineDefenseCntResponse,
    BaselineItemInfo: BaselineItemInfo,
    NetAttackTrend: NetAttackTrend,
    DescribeVertexDetailRequest: DescribeVertexDetailRequest,
    ComponentStatistics: ComponentStatistics,
    ExportAssetWebServiceInfoListRequest: ExportAssetWebServiceInfoListRequest,
    SetBashEventsStatusResponse: SetBashEventsStatusResponse,
    DescribeAssetUserInfoRequest: DescribeAssetUserInfoRequest,
    UpdateBaselineStrategyResponse: UpdateBaselineStrategyResponse,
    DescribeAgentInstallCommandRequest: DescribeAgentInstallCommandRequest,
    DescribeMachineRegionListResponse: DescribeMachineRegionListResponse,
    ExportPrivilegeEventsRequest: ExportPrivilegeEventsRequest,
    ModifyWebPageProtectSwitchRequest: ModifyWebPageProtectSwitchRequest,
    DescribeScreenGeneralStatRequest: DescribeScreenGeneralStatRequest,
    DescribeExpertServiceListRequest: DescribeExpertServiceListRequest,
    ModifyUsersConfigResponse: ModifyUsersConfigResponse,
    MachineExtraInfo: MachineExtraInfo,
    DescribeAttackEventInfoRequest: DescribeAttackEventInfoRequest,
    FileTamperEvent: FileTamperEvent,
    CreateLogExportRequest: CreateLogExportRequest,
    DescribeLicenseResponse: DescribeLicenseResponse,
    OrderResource: OrderResource,
    DescribeMalwareFileResponse: DescribeMalwareFileResponse,
    DescribeWebHookRuleRequest: DescribeWebHookRuleRequest,
    DescribeSecurityBroadcastInfoResponse: DescribeSecurityBroadcastInfoResponse,
    DescribeLogDeliveryKafkaOptionsResponse: DescribeLogDeliveryKafkaOptionsResponse,
    DescribeScreenRiskAssetsTopResponse: DescribeScreenRiskAssetsTopResponse,
    StopBaselineDetectRequest: StopBaselineDetectRequest,
    ScanBaselineResponse: ScanBaselineResponse,
    CheckLogKafkaConnectionStateRequest: CheckLogKafkaConnectionStateRequest,
    ModifyNetAttackSettingRequest: ModifyNetAttackSettingRequest,
    DescribeRiskDnsListResponse: DescribeRiskDnsListResponse,
    ExportRiskDnsPolicyListRequest: ExportRiskDnsPolicyListRequest,
    DescribeAssetWebAppListResponse: DescribeAssetWebAppListResponse,
    ExportAssetProcessInfoListRequest: ExportAssetProcessInfoListRequest,
    DescribeAssetWebAppCountResponse: DescribeAssetWebAppCountResponse,
    AssetDatabaseDetail: AssetDatabaseDetail,
    DescribeScanTaskStatusRequest: DescribeScanTaskStatusRequest,
    DescribeVulStoreListResponse: DescribeVulStoreListResponse,
    DescribeLoginWhiteHostListResponse: DescribeLoginWhiteHostListResponse,
    ExportIgnoreBaselineRuleRequest: ExportIgnoreBaselineRuleRequest,
    ModifyMaliciousRequestWhiteListResponse: ModifyMaliciousRequestWhiteListResponse,
    DeleteMachineTagRequest: DeleteMachineTagRequest,
    AssetDiskPartitionInfo: AssetDiskPartitionInfo,
    DescribeScreenMachineRegionsRequest: DescribeScreenMachineRegionsRequest,
    ModifyWebHookPolicyStatusRequest: ModifyWebHookPolicyStatusRequest,
    RiskDnsEvent: RiskDnsEvent,
    BaselineRuleInfo: BaselineRuleInfo,
    DescribeExportMachinesResponse: DescribeExportMachinesResponse,
    DescribeScanTaskStatusResponse: DescribeScanTaskStatusResponse,
    DescribeRansomDefenseStrategyMachinesRequest: DescribeRansomDefenseStrategyMachinesRequest,
    DescribeAssetLoadInfoResponse: DescribeAssetLoadInfoResponse,
    DescribeMachineRiskCntResponse: DescribeMachineRiskCntResponse,
    ScreenRegionMachines: ScreenRegionMachines,
    UpdateHostLoginWhiteObj: UpdateHostLoginWhiteObj,
    ModifyWebPageProtectSwitchResponse: ModifyWebPageProtectSwitchResponse,
    DescribeAssetWebFrameCountResponse: DescribeAssetWebFrameCountResponse,
    CanNotSeparateInfo: CanNotSeparateInfo,
    DescribeAssetWebLocationCountResponse: DescribeAssetWebLocationCountResponse,
    DescribeBashEventsNewResponse: DescribeBashEventsNewResponse,
    VulFixStatusInfo: VulFixStatusInfo,
    DeleteWebHookReceiverResponse: DeleteWebHookReceiverResponse,
    ExportAssetSystemPackageListResponse: ExportAssetSystemPackageListResponse,
    DescribeLogExportsResponse: DescribeLogExportsResponse,
    DescribeVulTrendResponse: DescribeVulTrendResponse,
    DescribeOpenPortStatisticsRequest: DescribeOpenPortStatisticsRequest,
    OsName: OsName,
    DescribeMalwareTimingScanSettingRequest: DescribeMalwareTimingScanSettingRequest,
    FullTextInfo: FullTextInfo,
    DescribeFileTamperRuleCountResponse: DescribeFileTamperRuleCountResponse,
    ExportAssetUserListRequest: ExportAssetUserListRequest,
    VulLevelInfo: VulLevelInfo,
    CreateBanWhiteListResponse: CreateBanWhiteListResponse,
    DescribeLogStorageStatisticResponse: DescribeLogStorageStatisticResponse,
    RegionInfo: RegionInfo,
    DescribeCanFixVulMachineResponse: DescribeCanFixVulMachineResponse,
    CreateSearchTemplateResponse: CreateSearchTemplateResponse,
    IncidentVertexInfo: IncidentVertexInfo,
    BaselineItemDetect: BaselineItemDetect,
    DescribeVulDefenceSettingResponse: DescribeVulDefenceSettingResponse,
    DescribeAssetProcessCountResponse: DescribeAssetProcessCountResponse,
    DescribeEmergencyResponseListRequest: DescribeEmergencyResponseListRequest,
    DescribeScanStateResponse: DescribeScanStateResponse,
    BaselineHostDetect: BaselineHostDetect,
    EditTagsRequest: EditTagsRequest,
    DeleteReverseShellRulesRequest: DeleteReverseShellRulesRequest,
    ScreenVulInfo: ScreenVulInfo,
    UntrustMalwaresRequest: UntrustMalwaresRequest,
    DescribeScreenEventsCntRequest: DescribeScreenEventsCntRequest,
    DescribeBaselineEffectHostListRequest: DescribeBaselineEffectHostListRequest,
    WebHookCustomField: WebHookCustomField,
    DescribeDefenceEventDetailResponse: DescribeDefenceEventDetailResponse,
    ExportBaselineHostDetectListRequest: ExportBaselineHostDetectListRequest,
    DescribeAssetDatabaseInfoRequest: DescribeAssetDatabaseInfoRequest,
    ModifyFileTamperEventsResponse: ModifyFileTamperEventsResponse,
    ExportAssetDatabaseListResponse: ExportAssetDatabaseListResponse,
    DescribeAssetUserCountRequest: DescribeAssetUserCountRequest,
    CreateRansomDefenseStrategyResponse: CreateRansomDefenseStrategyResponse,
    ExportVulDefencePluginEventRequest: ExportVulDefencePluginEventRequest,
    DescribeRansomDefenseRollBackTaskListRequest: DescribeRansomDefenseRollBackTaskListRequest,
    DescribeWarningHostConfigRequest: DescribeWarningHostConfigRequest,
    BashPolicy: BashPolicy,
    ModifyBanWhiteListResponse: ModifyBanWhiteListResponse,
    ExportAssetWebServiceInfoListResponse: ExportAssetWebServiceInfoListResponse,
    ExportAssetMachineListResponse: ExportAssetMachineListResponse,
    ExportSecurityTrendsResponse: ExportSecurityTrendsResponse,
    DescribeReverseShellEventInfoRequest: DescribeReverseShellEventInfoRequest,
    ModifyMalwareTimingScanSettingsResponse: ModifyMalwareTimingScanSettingsResponse,
    DescribeRiskDnsInfoResponse: DescribeRiskDnsInfoResponse,
    ExportRiskProcessEventsRequest: ExportRiskProcessEventsRequest,
    DescribeLogKafkaDeliverInfoRequest: DescribeLogKafkaDeliverInfoRequest,
    DescribeBaselineWeakPasswordListResponse: DescribeBaselineWeakPasswordListResponse,
    DeleteNonlocalLoginPlacesResponse: DeleteNonlocalLoginPlacesResponse,
    ExportAssetMachineDetailResponse: ExportAssetMachineDetailResponse,
    ModifyLogKafkaAccessResponse: ModifyLogKafkaAccessResponse,
    DeleteMalwareScanTaskResponse: DeleteMalwareScanTaskResponse,
    MalwareWhiteListInfo: MalwareWhiteListInfo,
    DescribeBaselineDetailResponse: DescribeBaselineDetailResponse,
    DescribeWebHookReceiverResponse: DescribeWebHookReceiverResponse,
    ExportAttackEventsResponse: ExportAttackEventsResponse,
    ExportIgnoreRuleEffectHostListResponse: ExportIgnoreRuleEffectHostListResponse,
    ScreenRegionInfo: ScreenRegionInfo,
    DescribeBaselinePolicyListResponse: DescribeBaselinePolicyListResponse,
    DescribeBanRegionsResponse: DescribeBanRegionsResponse,
    DescribeLogStorageRecordResponse: DescribeLogStorageRecordResponse,
    DeletePrivilegeEventsResponse: DeletePrivilegeEventsResponse,
    VulHostTopInfo: VulHostTopInfo,
    OrderModifyObject: OrderModifyObject,
    DescribeRansomDefenseRollBackTaskListResponse: DescribeRansomDefenseRollBackTaskListResponse,
    VertexDetail: VertexDetail,
    ExportAssetEnvListRequest: ExportAssetEnvListRequest,
    DescribeVulEffectHostListResponse: DescribeVulEffectHostListResponse,
    RegionListDetail: RegionListDetail,
    DescribeSearchLogsRequest: DescribeSearchLogsRequest,
    ScanVulSettingResponse: ScanVulSettingResponse,
    DescribeAssetJarInfoResponse: DescribeAssetJarInfoResponse,
    DescribeVulInfoCvssRequest: DescribeVulInfoCvssRequest,
    SwitchBashRulesResponse: SwitchBashRulesResponse,
    DescribeFileTamperRulesResponse: DescribeFileTamperRulesResponse,
    DescribeComponentStatisticsRequest: DescribeComponentStatisticsRequest,
    DescribeAssetProcessCountRequest: DescribeAssetProcessCountRequest,
    ModifyBanStatusResponse: ModifyBanStatusResponse,
    DescribeLoginWhiteListResponse: DescribeLoginWhiteListResponse,
    DescribeUsualLoginPlacesRequest: DescribeUsualLoginPlacesRequest,
    ModifyWebHookReceiverRequest: ModifyWebHookReceiverRequest,
    ExportAssetInitServiceListResponse: ExportAssetInitServiceListResponse,
    DescribeScanMalwareScheduleResponse: DescribeScanMalwareScheduleResponse,
    ExportRansomDefenseEventsListRequest: ExportRansomDefenseEventsListRequest,
    DescribeScreenProtectionCntRequest: DescribeScreenProtectionCntRequest,
    AssetWebLocationBaseInfo: AssetWebLocationBaseInfo,
    DescribeBaselineItemListRequest: DescribeBaselineItemListRequest,
    DescribeScreenHostInvasionRequest: DescribeScreenHostInvasionRequest,
    BashRule: BashRule,
    ExportVulInfoRequest: ExportVulInfoRequest,
    DescribeAssetUserCountResponse: DescribeAssetUserCountResponse,
    DescribeScreenBroadcastsRequest: DescribeScreenBroadcastsRequest,
    CreateSearchLogResponse: CreateSearchLogResponse,
    DescribeRiskDnsPolicyListResponse: DescribeRiskDnsPolicyListResponse,
    DescribeSecurityTrendsResponse: DescribeSecurityTrendsResponse,
    BashEventsInfo: BashEventsInfo,
    StopNoticeBanTipsResponse: StopNoticeBanTipsResponse,
    AssetSystemPackageInfo: AssetSystemPackageInfo,
    DescribeEmergencyVulListRequest: DescribeEmergencyVulListRequest,
    DescribeSecurityDynamicsResponse: DescribeSecurityDynamicsResponse,
    DeleteReverseShellEventsResponse: DeleteReverseShellEventsResponse,
    ExportAssetEnvListResponse: ExportAssetEnvListResponse,
    LicenseBindDetail: LicenseBindDetail,
    DescribeAttackTrendsResponse: DescribeAttackTrendsResponse,
    DescribeVulTrendRequest: DescribeVulTrendRequest,
    ModifyLogStorageConfigResponse: ModifyLogStorageConfigResponse,
    DescribeAttackStatisticsRequest: DescribeAttackStatisticsRequest,
    ExportFileTamperRulesRequest: ExportFileTamperRulesRequest,
    AddLoginWhiteListsResponse: AddLoginWhiteListsResponse,
    ModifyLogKafkaStateRequest: ModifyLogKafkaStateRequest,
    AssetWebServiceBaseInfo: AssetWebServiceBaseInfo,
    RiskDnsPolicy: RiskDnsPolicy,
    DeleteAllJavaMemShellsResponse: DeleteAllJavaMemShellsResponse,
    DescribeMalwareWhiteListRequest: DescribeMalwareWhiteListRequest,
    ModifyUsersConfigRequest: ModifyUsersConfigRequest,
    DescribeGeneralStatRequest: DescribeGeneralStatRequest,
    DescribeHotVulTopRequest: DescribeHotVulTopRequest,
    AssetInitServiceBaseInfo: AssetInitServiceBaseInfo,
    DeleteBanWhiteListRequest: DeleteBanWhiteListRequest,
    DescribeAssetWebFrameCountRequest: DescribeAssetWebFrameCountRequest,
    DescribeIgnoreRuleEffectHostListRequest: DescribeIgnoreRuleEffectHostListRequest,
    ExportAssetMachineListRequest: ExportAssetMachineListRequest,
    ExportInfo: ExportInfo,
    DescribeScreenProtectionStatResponse: DescribeScreenProtectionStatResponse,
    ExportBaselineItemDetectListRequest: ExportBaselineItemDetectListRequest,
    DescribeAttackSourceRequest: DescribeAttackSourceRequest,
    DescribeMalwareInfoResponse: DescribeMalwareInfoResponse,
    DeleteRiskDnsPolicyResponse: DeleteRiskDnsPolicyResponse,
    DuplicateHosts: DuplicateHosts,
    DescribeLogStorageRecordRequest: DescribeLogStorageRecordRequest,
    ExportBaselineHostDetectListResponse: ExportBaselineHostDetectListResponse,
    MalwareWhiteListAffectEvent: MalwareWhiteListAffectEvent,
    CreateBanWhiteListRequest: CreateBanWhiteListRequest,
    DescribeMachineRiskCntRequest: DescribeMachineRiskCntRequest,
    ExportRansomDefenseStrategyMachinesResponse: ExportRansomDefenseStrategyMachinesResponse,
    BaselineRuleTopInfo: BaselineRuleTopInfo,
    ExportAssetWebFrameListRequest: ExportAssetWebFrameListRequest,
    DescribeSecurityBroadcastsRequest: DescribeSecurityBroadcastsRequest,
    DescribeVulDefenceEventResponse: DescribeVulDefenceEventResponse,
    ExportBaselineEffectHostListResponse: ExportBaselineEffectHostListResponse,
    BashEventsInfoNew: BashEventsInfoNew,
    ModifyLogKafkaAccessRequest: ModifyLogKafkaAccessRequest,
    EventStat: EventStat,
    DescribeLicenseBindScheduleRequest: DescribeLicenseBindScheduleRequest,
    DeleteRiskDnsPolicyRequest: DeleteRiskDnsPolicyRequest,
    DescribeBruteAttackRulesRequest: DescribeBruteAttackRulesRequest,
    DescribeProcessStatisticsResponse: DescribeProcessStatisticsResponse,
    DescribeLogIndexResponse: DescribeLogIndexResponse,
    DescribeAttackVulTypeListResponse: DescribeAttackVulTypeListResponse,
    VulEffectModuleInfo: VulEffectModuleInfo,
    DescribeAssetWebAppPluginListResponse: DescribeAssetWebAppPluginListResponse,
    DescribeAssetWebAppCountRequest: DescribeAssetWebAppCountRequest,
    DescribeAssetTypesRequest: DescribeAssetTypesRequest,
    BaselineEventLevelInfo: BaselineEventLevelInfo,
    DescribeMalwareFileRequest: DescribeMalwareFileRequest,
    DescribeLoginWhiteCombinedListRequest: DescribeLoginWhiteCombinedListRequest,
    Strategy: Strategy,
    DeleteSearchTemplateResponse: DeleteSearchTemplateResponse,
    DeleteBashPoliciesResponse: DeleteBashPoliciesResponse,
    DescribeEmergencyResponseListResponse: DescribeEmergencyResponseListResponse,
    ScreenProtectionCnt: ScreenProtectionCnt,
    AssetPlanTask: AssetPlanTask,
    VulDefenceOverview: VulDefenceOverview,
    DescribeFileTamperEventRuleInfoResponse: DescribeFileTamperEventRuleInfoResponse,
    DeleteBaselinePolicyResponse: DeleteBaselinePolicyResponse,
    ModifyVulDefenceSettingRequest: ModifyVulDefenceSettingRequest,
    ModifyLoginWhiteRecordResponse: ModifyLoginWhiteRecordResponse,
    DescribeMalwareWhiteListAffectListRequest: DescribeMalwareWhiteListAffectListRequest,
    DeleteWebHookPolicyRequest: DeleteWebHookPolicyRequest,
    ModifyRansomDefenseStrategyStatusRequest: ModifyRansomDefenseStrategyStatusRequest,
    DescribeAssetAppListResponse: DescribeAssetAppListResponse,
    ScreenDefendAttackLog: ScreenDefendAttackLog,
    DescribeVulDefencePluginStatusResponse: DescribeVulDefencePluginStatusResponse,
    HostTagInfo: HostTagInfo,
    DescribeRansomDefenseEventsListResponse: DescribeRansomDefenseEventsListResponse,
    DescribeVulEffectModulesRequest: DescribeVulEffectModulesRequest,
    ModifyRiskDnsPolicyStatusRequest: ModifyRiskDnsPolicyStatusRequest,
    DescribeScreenProtectionCntResponse: DescribeScreenProtectionCntResponse,
    ModifyRansomDefenseEventsStatusResponse: ModifyRansomDefenseEventsStatusResponse,
    DescribeBaselineDefaultStrategyListRequest: DescribeBaselineDefaultStrategyListRequest,
    CreateScanMalwareSettingRequest: CreateScanMalwareSettingRequest,
    AssetLoadSummary: AssetLoadSummary,
    DescribeMalwareTimingScanSettingResponse: DescribeMalwareTimingScanSettingResponse,
    DescribeHostLoginListRequest: DescribeHostLoginListRequest,
    ModifyRansomDefenseStrategyStatusResponse: ModifyRansomDefenseStrategyStatusResponse,
    ExportRansomDefenseStrategyListRequest: ExportRansomDefenseStrategyListRequest,
    Machine: Machine,
    FileTamperRule: FileTamperRule,
    SecurityTrend: SecurityTrend,
    ScanTaskAgainResponse: ScanTaskAgainResponse,
    DescribeAssetWebServiceProcessListRequest: DescribeAssetWebServiceProcessListRequest,
    DescribeScreenMachinesResponse: DescribeScreenMachinesResponse,
    LicenseDetail: LicenseDetail,
    PrivilegeRule: PrivilegeRule,
    ScanVulSettingRequest: ScanVulSettingRequest,
    ExportVulDetectionExcelRequest: ExportVulDetectionExcelRequest,
    CreateEmergencyVulScanRequest: CreateEmergencyVulScanRequest,
    ModifyWebHookRuleStatusResponse: ModifyWebHookRuleStatusResponse,
    ExportVulEffectHostListResponse: ExportVulEffectHostListResponse,
    DescribeAssetWebServiceCountResponse: DescribeAssetWebServiceCountResponse,
    AssetCoreModuleDetail: AssetCoreModuleDetail,
    ExportScanTaskDetailsResponse: ExportScanTaskDetailsResponse,
    DescribeVulTopRequest: DescribeVulTopRequest,
    DescribeScreenProtectionStatRequest: DescribeScreenProtectionStatRequest,
    ModifyLogKafkaDeliverTypeRequest: ModifyLogKafkaDeliverTypeRequest,
    IgnoreBaselineRule: IgnoreBaselineRule,
    DescribeBaselineItemDetectListRequest: DescribeBaselineItemDetectListRequest,
    ExportBaselineItemDetectListResponse: ExportBaselineItemDetectListResponse,
    DescribeBanStatusRequest: DescribeBanStatusRequest,
    DescribeAssetRecentMachineInfoResponse: DescribeAssetRecentMachineInfoResponse,
    BaselineItem: BaselineItem,
    DescribeMalWareListResponse: DescribeMalWareListResponse,
    DescribeWebHookRulesRequest: DescribeWebHookRulesRequest,
    ModifyMalwareWhiteListResponse: ModifyMalwareWhiteListResponse,
    DescribeAssetPortInfoListResponse: DescribeAssetPortInfoListResponse,
    DescribeMalwareRiskOverviewRequest: DescribeMalwareRiskOverviewRequest,
    DescribeMaliciousRequestWhiteListResponse: DescribeMaliciousRequestWhiteListResponse,
    DescribeBaselinePolicyListRequest: DescribeBaselinePolicyListRequest,
    VulDefenceEventDetail: VulDefenceEventDetail,
    DeleteBruteAttacksResponse: DeleteBruteAttacksResponse,
    ExportTasksResponse: ExportTasksResponse,
    ExportAssetWebAppListResponse: ExportAssetWebAppListResponse,
    DescribeIgnoreBaselineRuleResponse: DescribeIgnoreBaselineRuleResponse,
    DescribeVulEmergentMsgRequest: DescribeVulEmergentMsgRequest,
    DescribeMachineOsListRequest: DescribeMachineOsListRequest,
    DescribeMalwareRiskWarningResponse: DescribeMalwareRiskWarningResponse,
    DescribeBashRulesRequest: DescribeBashRulesRequest,
    ExportLicenseDetailResponse: ExportLicenseDetailResponse,
    BaselineBasicInfo: BaselineBasicInfo,
    DescribeBanModeResponse: DescribeBanModeResponse,
    DescribeScreenAttackHotspotResponse: DescribeScreenAttackHotspotResponse,
    FileTamperRuleCount: FileTamperRuleCount,
    DescribeRiskDnsEventInfoResponse: DescribeRiskDnsEventInfoResponse,
    DescribeSecurityEventStatResponse: DescribeSecurityEventStatResponse,
    DescribeAssetDatabaseListRequest: DescribeAssetDatabaseListRequest,
    ModifyWebHookRuleStatusRequest: ModifyWebHookRuleStatusRequest,
    KeysLocalStorageResponse: KeysLocalStorageResponse,
    DescribeAssetMachineListRequest: DescribeAssetMachineListRequest,
    ABTestConfig: ABTestConfig,
    ScreenBaselineInfo: ScreenBaselineInfo,
    Filter: Filter,
    DescribeAssetMachineTagTopRequest: DescribeAssetMachineTagTopRequest,
    DescribeAgentInstallationTokenRequest: DescribeAgentInstallationTokenRequest,
    DescribeVulDefencePluginDetailResponse: DescribeVulDefencePluginDetailResponse,
    JavaMemShellPluginInfo: JavaMemShellPluginInfo,
    DescribeAssetDatabaseListResponse: DescribeAssetDatabaseListResponse,
    ExportMalwaresRequest: ExportMalwaresRequest,
    DescribeProcessStatisticsRequest: DescribeProcessStatisticsRequest,
    RiskDnsList: RiskDnsList,
    SyncAssetScanResponse: SyncAssetScanResponse,
    MalwareRiskOverview: MalwareRiskOverview,
    AssetCoreModuleBaseInfo: AssetCoreModuleBaseInfo,
    CheckLogKafkaConnectionStateResponse: CheckLogKafkaConnectionStateResponse,
    ExportBashPoliciesRequest: ExportBashPoliciesRequest,
    DescribeScreenBroadcastsResponse: DescribeScreenBroadcastsResponse,
    CreateBaselineStrategyRequest: CreateBaselineStrategyRequest,
    DescribeSecurityTrendsRequest: DescribeSecurityTrendsRequest,
    VulFixStatusHostInfo: VulFixStatusHostInfo,
    AttackSourceEvent: AttackSourceEvent,
    DescribePrivilegeRulesResponse: DescribePrivilegeRulesResponse,
    DescribeReverseShellEventsResponse: DescribeReverseShellEventsResponse,
    DescribeAssetAppCountRequest: DescribeAssetAppCountRequest,
    DescribeMaliciousRequestWhiteListRequest: DescribeMaliciousRequestWhiteListRequest,
    DescribeBashEventsNewRequest: DescribeBashEventsNewRequest,
    MalwareRisk: MalwareRisk,
    DescribeAssetPortInfoListRequest: DescribeAssetPortInfoListRequest,
    DescribeVulDefencePluginDetailRequest: DescribeVulDefencePluginDetailRequest,
    DescribeExportMachinesRequest: DescribeExportMachinesRequest,
    DescribeAssetInfoResponse: DescribeAssetInfoResponse,
    WarningObject: WarningObject,
    DescribeAssetPortCountResponse: DescribeAssetPortCountResponse,
    DescribeScreenMachinesRequest: DescribeScreenMachinesRequest,
    DeleteMalwareScanTaskRequest: DeleteMalwareScanTaskRequest,
    ScreenInvasion: ScreenInvasion,
    ExportBashPoliciesResponse: ExportBashPoliciesResponse,
    ModifyEventAttackStatusResponse: ModifyEventAttackStatusResponse,
    DescribeIgnoreRuleEffectHostListResponse: DescribeIgnoreRuleEffectHostListResponse,
    FileTamperRuleDetail: FileTamperRuleDetail,
    CreateBaselineStrategyResponse: CreateBaselineStrategyResponse,
    ExportAssetCoreModuleListResponse: ExportAssetCoreModuleListResponse,
    ModifyMachineAutoClearConfigResponse: ModifyMachineAutoClearConfigResponse,
    DescribeHistoryAccountsResponse: DescribeHistoryAccountsResponse,
    BaselineCustomRuleIdName: BaselineCustomRuleIdName,
    DescribeLogStorageConfigResponse: DescribeLogStorageConfigResponse,
    DescribeVulEmergentMsgResponse: DescribeVulEmergentMsgResponse,
    DescribeLoginWhiteListRequest: DescribeLoginWhiteListRequest,
    DescribeAssetDatabaseCountRequest: DescribeAssetDatabaseCountRequest,
    ModifyWarningSettingRequest: ModifyWarningSettingRequest,
    ExportVulDetectionReportResponse: ExportVulDetectionReportResponse,
    DescribeScanScheduleRequest: DescribeScanScheduleRequest,
    CheckFirstScanBaselineRequest: CheckFirstScanBaselineRequest,
    DescribeLicenseGeneralResponse: DescribeLicenseGeneralResponse,
    ScreenEventsCnt: ScreenEventsCnt,
    DescribeFastAnalysisResponse: DescribeFastAnalysisResponse,
    ScreenMachine: ScreenMachine,
    DescribeAESKeyRequest: DescribeAESKeyRequest,
    ModifyWebHookRuleResponse: ModifyWebHookRuleResponse,
    DescribeAssetLoadInfoRequest: DescribeAssetLoadInfoRequest,
    ModifyMaliciousRequestWhiteListRequest: ModifyMaliciousRequestWhiteListRequest,
    RetryCreateSnapshotResponse: RetryCreateSnapshotResponse,
    CreateBuyBindTaskResponse: CreateBuyBindTaskResponse,
    ExportScanTaskDetailsRequest: ExportScanTaskDetailsRequest,
    ExportBaselineListResponse: ExportBaselineListResponse,
    DescribeBruteAttackRulesResponse: DescribeBruteAttackRulesResponse,
    ModifyBanModeResponse: ModifyBanModeResponse,
    DescribeVulDefencePluginExceptionCountResponse: DescribeVulDefencePluginExceptionCountResponse,
    DeleteLicenseRecordResponse: DeleteLicenseRecordResponse,
    AssetProcessBaseInfo: AssetProcessBaseInfo,
    DescribeVulDefenceOverviewRequest: DescribeVulDefenceOverviewRequest,
    DescribeCanNotSeparateMachineRequest: DescribeCanNotSeparateMachineRequest,
    DescribeRiskDnsEventListResponse: DescribeRiskDnsEventListResponse,
    DeleteBruteAttacksRequest: DeleteBruteAttacksRequest,
    DescribeAssetCoreModuleListResponse: DescribeAssetCoreModuleListResponse,
    DescribeRansomDefenseStateResponse: DescribeRansomDefenseStateResponse,
    DescribeFastAnalysisRequest: DescribeFastAnalysisRequest,
    DescribeRiskBatchStatusRequest: DescribeRiskBatchStatusRequest,
    DescribeLoginWhiteCombinedListResponse: DescribeLoginWhiteCombinedListResponse,
    DeleteMachineClearHistoryResponse: DeleteMachineClearHistoryResponse,
    DescribeLicenseWhiteConfigResponse: DescribeLicenseWhiteConfigResponse,
    ExportVulDetectionExcelResponse: ExportVulDetectionExcelResponse,
    ModifyWarningHostConfigResponse: ModifyWarningHostConfigResponse,
    LogHistogram: LogHistogram,
    DescribeVulCveIdInfoResponse: DescribeVulCveIdInfoResponse,
    DescribeAlarmVertexIdResponse: DescribeAlarmVertexIdResponse,
    CreateSearchTemplateRequest: CreateSearchTemplateRequest,
    DeleteTagsRequest: DeleteTagsRequest,
    DescribeScanStateRequest: DescribeScanStateRequest,
    SyncBaselineDetectSummaryResponse: SyncBaselineDetectSummaryResponse,
    ExportFileTamperRulesResponse: ExportFileTamperRulesResponse,
    DescribeAgentInstallCommandResponse: DescribeAgentInstallCommandResponse,
    DescribeSafeInfoResponse: DescribeSafeInfoResponse,
    AssetEnvBaseInfo: AssetEnvBaseInfo,
    ModifyVulDefenceEventStatusResponse: ModifyVulDefenceEventStatusResponse,
    MalwareInfo: MalwareInfo,
    Place: Place,
    DescribeSecurityProtectionStatRequest: DescribeSecurityProtectionStatRequest,
    LogInfo: LogInfo,
    DescribeHostInfoResponse: DescribeHostInfoResponse,
    ModifyWebHookPolicyStatusResponse: ModifyWebHookPolicyStatusResponse,
    ExportRiskDnsPolicyListResponse: ExportRiskDnsPolicyListResponse,
    ModifyBruteAttackRulesRequest: ModifyBruteAttackRulesRequest,
    DescribeScreenDefenseTrendsResponse: DescribeScreenDefenseTrendsResponse,
    KeyValueArrayInfo: KeyValueArrayInfo,
    SyncBaselineDetectSummaryRequest: SyncBaselineDetectSummaryRequest,
    DescribeExpertServiceOrderListResponse: DescribeExpertServiceOrderListResponse,
    DeleteReverseShellRulesResponse: DeleteReverseShellRulesResponse,
    DescribeAssetPlanTaskListRequest: DescribeAssetPlanTaskListRequest,
    DescribePrivilegeEventInfoResponse: DescribePrivilegeEventInfoResponse,
    DescribeMachineLicenseDetailRequest: DescribeMachineLicenseDetailRequest,
    VulFixStatusSnapshotInfo: VulFixStatusSnapshotInfo,
    Tags: Tags,
    DescribeBaselineItemListResponse: DescribeBaselineItemListResponse,
    DescribeMachinesSimpleRequest: DescribeMachinesSimpleRequest,
    StopBaselineDetectResponse: StopBaselineDetectResponse,
    BaselineWeakPassword: BaselineWeakPassword,
    DescribeBanRegionsRequest: DescribeBanRegionsRequest,
    DescribeBashPoliciesResponse: DescribeBashPoliciesResponse,
    SecurityEventInfo: SecurityEventInfo,
    MachineSnapshotInfo: MachineSnapshotInfo,
    ExportFileTamperEventsRequest: ExportFileTamperEventsRequest,
    DeleteLicenseRecordAllResponse: DeleteLicenseRecordAllResponse,
    ModifyBanModeRequest: ModifyBanModeRequest,
    DescribeBaselineDefaultStrategyListResponse: DescribeBaselineDefaultStrategyListResponse,
    BanWhiteListDetail: BanWhiteListDetail,
    DeleteScanTaskResponse: DeleteScanTaskResponse,
    DescribeScreenGeneralStatResponse: DescribeScreenGeneralStatResponse,
    EditBashRulesRequest: EditBashRulesRequest,
    RansomDefenseRollbackTask: RansomDefenseRollbackTask,
    DescribeMachineRegionsResponse: DescribeMachineRegionsResponse,
    ExportVulDefenceListRequest: ExportVulDefenceListRequest,
    SecurityButlerInfo: SecurityButlerInfo,
    WebHookReceiverUsage: WebHookReceiverUsage,
    DestroyOrderRequest: DestroyOrderRequest,
    AssetWebAppBaseInfo: AssetWebAppBaseInfo,
    DescribeRiskDnsInfoRequest: DescribeRiskDnsInfoRequest,
    AssetCoreModuleParam: AssetCoreModuleParam,
    DescribeMachineLicenseDetailResponse: DescribeMachineLicenseDetailResponse,
    DescribeHostInfoRequest: DescribeHostInfoRequest,
    DeleteBashEventsRequest: DeleteBashEventsRequest,
    DescribeLicenseWhiteConfigRequest: DescribeLicenseWhiteConfigRequest,
    TopInfo: TopInfo,
    AssetJarBaseInfo: AssetJarBaseInfo,
    DescribeFileTamperEventRuleInfoRequest: DescribeFileTamperEventRuleInfoRequest,
    VulInfoList: VulInfoList,
    ExportIgnoreRuleEffectHostListRequest: ExportIgnoreRuleEffectHostListRequest,
    JavaMemShellPluginSetting: JavaMemShellPluginSetting,
    MachineFileTamperRule: MachineFileTamperRule,
    ModifyLicenseOrderResponse: ModifyLicenseOrderResponse,
    DescribeAttackEventInfoResponse: DescribeAttackEventInfoResponse,
    DescribeMachineSnapshotResponse: DescribeMachineSnapshotResponse,
    DescribeVulHostCountScanTimeResponse: DescribeVulHostCountScanTimeResponse,
    WarningInfoObj: WarningInfoObj,
    WebHookRuleSummary: WebHookRuleSummary,
    DescribeAssetWebLocationCountRequest: DescribeAssetWebLocationCountRequest,
    DescribeAssetCoreModuleListRequest: DescribeAssetCoreModuleListRequest,
    VulInfoByCveId: VulInfoByCveId,
    DeleteLogExportResponse: DeleteLogExportResponse,
    TestWebHookRuleResponse: TestWebHookRuleResponse,
    DeleteBanWhiteListResponse: DeleteBanWhiteListResponse,
    DescribeBaselineStrategyDetailResponse: DescribeBaselineStrategyDetailResponse,
    DescribeBaselineListRequest: DescribeBaselineListRequest,
    DescribePublicProxyInstallCommandRequest: DescribePublicProxyInstallCommandRequest,
    ExportJavaMemShellsResponse: ExportJavaMemShellsResponse,
    DescribeProductStatusRequest: DescribeProductStatusRequest,
    DescribeRiskProcessEventsResponse: DescribeRiskProcessEventsResponse,
    DescribeScreenHostInvasionResponse: DescribeScreenHostInvasionResponse,
    ExportBaselineFixListResponse: ExportBaselineFixListResponse,
    ExportBashEventsNewResponse: ExportBashEventsNewResponse,
    DescribeMachineDefenseCntRequest: DescribeMachineDefenseCntRequest,
    ModifyFileTamperRuleStatusResponse: ModifyFileTamperRuleStatusResponse,
    DescribeBaselineTopRequest: DescribeBaselineTopRequest,
    DescribeAssetAppProcessListRequest: DescribeAssetAppProcessListRequest,
    ScanTaskAgainRequest: ScanTaskAgainRequest,
    ExportAssetWebAppListRequest: ExportAssetWebAppListRequest,
    DescribeRecommendedProtectCpuResponse: DescribeRecommendedProtectCpuResponse,
    DescribeLicenseBindListRequest: DescribeLicenseBindListRequest,
    DeleteLicenseRecordAllRequest: DeleteLicenseRecordAllRequest,
    DescribeAccountStatisticsRequest: DescribeAccountStatisticsRequest,
    ExportBruteAttacksResponse: ExportBruteAttacksResponse,
    JavaMemShellDetail: JavaMemShellDetail,
    DescribeBaselineHostDetectListResponse: DescribeBaselineHostDetectListResponse,
    AssetWebLocationPath: AssetWebLocationPath,
    DescribeAssetProcessInfoListResponse: DescribeAssetProcessInfoListResponse,
    ChangeStrategyEnableStatusRequest: ChangeStrategyEnableStatusRequest,
    ProcessStatistics: ProcessStatistics,
    DescribeScanScheduleResponse: DescribeScanScheduleResponse,
    BaselineDetail: BaselineDetail,
    DescribeVulDefenceOverviewResponse: DescribeVulDefenceOverviewResponse,
    DescribeAssetWebAppListRequest: DescribeAssetWebAppListRequest,
    ExpertServiceOrderInfo: ExpertServiceOrderInfo,
    DescribeAssetEnvListResponse: DescribeAssetEnvListResponse,
    WebHookRuleDetail: WebHookRuleDetail,
    DescribePrivilegeEventInfoRequest: DescribePrivilegeEventInfoRequest,
    ModifyBashPolicyRequest: ModifyBashPolicyRequest,
    DescribeScreenEmergentMsgResponse: DescribeScreenEmergentMsgResponse,
    DeleteAllJavaMemShellsRequest: DeleteAllJavaMemShellsRequest,
    VulDefencePluginDetail: VulDefencePluginDetail,
    DescribeVersionCompareChartRequest: DescribeVersionCompareChartRequest,
    DescribeLicenseRequest: DescribeLicenseRequest,
    DescribeLicenseGeneralRequest: DescribeLicenseGeneralRequest,
    DescribeAssetJarInfoRequest: DescribeAssetJarInfoRequest,
    AccountStatistics: AccountStatistics,
    AssetUserKeyInfo: AssetUserKeyInfo,
    DescribeMachinesResponse: DescribeMachinesResponse,
    DescribeMalwareWhiteListResponse: DescribeMalwareWhiteListResponse,
    RansomDefenseStrategyMachineInfo: RansomDefenseStrategyMachineInfo,
    DescribeAssetWebLocationListRequest: DescribeAssetWebLocationListRequest,
    DescribeAssetHostTotalCountRequest: DescribeAssetHostTotalCountRequest,
    CreateMaliciousRequestWhiteListResponse: CreateMaliciousRequestWhiteListResponse,
    DescribeVulLevelCountRequest: DescribeVulLevelCountRequest,
    ScanVulRequest: ScanVulRequest,
    AddLoginWhiteListsRequest: AddLoginWhiteListsRequest,
    DescribeVulHostCountScanTimeRequest: DescribeVulHostCountScanTimeRequest,
    DescribeProVersionStatusRequest: DescribeProVersionStatusRequest,
    DescribeBaselineListResponse: DescribeBaselineListResponse,
    DescribeBashEventsInfoResponse: DescribeBashEventsInfoResponse,
    DescribeJavaMemShellPluginInfoResponse: DescribeJavaMemShellPluginInfoResponse,
    VulEffectHostList: VulEffectHostList,
    DescribeAlarmIncidentNodesResponse: DescribeAlarmIncidentNodesResponse,
    DescribeExpertServiceOrderListRequest: DescribeExpertServiceOrderListRequest,
    DescribeFileTamperRulesRequest: DescribeFileTamperRulesRequest,
    DescribeJavaMemShellInfoResponse: DescribeJavaMemShellInfoResponse,
    DescribeRecommendedProtectCpuRequest: DescribeRecommendedProtectCpuRequest,
    DescribeABTestConfigResponse: DescribeABTestConfigResponse,
    RansomDefenseBackup: RansomDefenseBackup,
    DescribeProVersionStatusResponse: DescribeProVersionStatusResponse,
    SearchTemplate: SearchTemplate,
    DescribeVulFixStatusResponse: DescribeVulFixStatusResponse,
    DescribeGeneralStatResponse: DescribeGeneralStatResponse,
    DescribeLogExportsRequest: DescribeLogExportsRequest,
    DeleteMachineTagResponse: DeleteMachineTagResponse,
    UpdateMachineTagsResponse: UpdateMachineTagsResponse,
    BruteAttackInfo: BruteAttackInfo,
    ModifyLoginWhiteInfoRequest: ModifyLoginWhiteInfoRequest,
    DescribeVulFixStatusRequest: DescribeVulFixStatusRequest,
    UpdateMachineTagsRequest: UpdateMachineTagsRequest,
    DescribeBaselineItemDetectListResponse: DescribeBaselineItemDetectListResponse,
    DescribeScanTaskDetailsResponse: DescribeScanTaskDetailsResponse,
    UpdateBaselineStrategyRequest: UpdateBaselineStrategyRequest,
    DescribeHostLoginListResponse: DescribeHostLoginListResponse,
    DescribePublicProxyInstallCommandResponse: DescribePublicProxyInstallCommandResponse,
    DescribeAttackTopRequest: DescribeAttackTopRequest,
    ModifyRiskEventsStatusResponse: ModifyRiskEventsStatusResponse,
    DescribeVulCveIdInfoRequest: DescribeVulCveIdInfoRequest,
    ModifyJavaMemShellsStatusResponse: ModifyJavaMemShellsStatusResponse,
    AssetPortBaseInfo: AssetPortBaseInfo,
    DescribeAssetWebLocationInfoRequest: DescribeAssetWebLocationInfoRequest,
    DescribeAlarmVertexIdRequest: DescribeAlarmVertexIdRequest,
    DescribeAttackSourceEventsRequest: DescribeAttackSourceEventsRequest,
    DescribeAssetInitServiceListResponse: DescribeAssetInitServiceListResponse,
    ModifyBaselinePolicyRequest: ModifyBaselinePolicyRequest,
    DescribeBaselineHostDetectListRequest: DescribeBaselineHostDetectListRequest,
    DescribeVulDefenceListRequest: DescribeVulDefenceListRequest,
    EditTagsResponse: EditTagsResponse,
    DescribeAssetWebFrameListResponse: DescribeAssetWebFrameListResponse,
    DescribeRansomDefenseStrategyDetailRequest: DescribeRansomDefenseStrategyDetailRequest,
    ModifyRiskDnsPolicyRequest: ModifyRiskDnsPolicyRequest,
    DescribeWarningListResponse: DescribeWarningListResponse,
    DescribeAttackSourceEventsResponse: DescribeAttackSourceEventsResponse,
    ClearLocalStorageRequest: ClearLocalStorageRequest,
    DescribeAssetUserListRequest: DescribeAssetUserListRequest,
    DeleteBaselineStrategyRequest: DeleteBaselineStrategyRequest,
    DescribeAssetSystemPackageListRequest: DescribeAssetSystemPackageListRequest,
    DescribeVulHostTopRequest: DescribeVulHostTopRequest,
    MachineTag: MachineTag,
    DescribeSecurityEventsCntResponse: DescribeSecurityEventsCntResponse,
    Filters: Filters,
    DescribeAssetWebServiceInfoListRequest: DescribeAssetWebServiceInfoListRequest,
    CreateSearchLogRequest: CreateSearchLogRequest,
    DescribeSearchTemplatesRequest: DescribeSearchTemplatesRequest,
    CancelIgnoreVulRequest: CancelIgnoreVulRequest,
    ExportAssetUserListResponse: ExportAssetUserListResponse,

}