forked from trustwallet/wallet-core
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Master #3
Open
edTheGuy00
wants to merge
499
commits into
dart
Choose a base branch
from
master
base: dart
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Master #3
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* feat(cosmos): add support for Quasar --------- Co-authored-by: Milerius <[email protected]>
Co-authored-by: Sztergbaum Roman <[email protected]>
…rustwallet#3065) * init codegen-v2 * play around with possible implementation * impl derive for GSeparator * add GSeparators with wrapped Vec<GSeparator> * impl ParseTree for GSeparator * add Driver and DriverUsed convenient structs * add read_amt function, use in ParseTree impl * add DerivationResult and Error type, continue impl * update existing code to DerivationResult changes * small cleanup * rename revert to rollback * implement basic tests for GSeparator * fix target slice in Driver impl * track test module * make a GStruct test in GType::derive * handle EOF in ParseTree * check for EOF in tests * init basic types for function parameters * impl ParseTree for GParamItemWithMarker * impl ParseTree for GMarker and GParamName * complete ParseTree impl for GParamItemWithMarker * expand tests, derive Eq and PartialEq for relevant types * implement ParseTree for GParamItemWithoutMarker, write unit tests * add Continuum and ContinuumNext structs * implement ParseTree for Continuum * introduce WithEof struct for checking EOF * add EitherOr struct * deprecate WithEof * make internal changes to Driver * update ParseTree impls to Driver changes * complete new Driver implementation * update unit tests * rename DriverScope to Driver * update scoping mechanism * return DriverFinalized from derive impl * add test for individual separator items * add test_eof * fix position when applying scope * rename various types and methods * move Reader types into reader module * move types into grammar module * rename ReaderToMerge to ReaderBranch * introduce GFuncParams type * add GNonAlphanumeric type * add wipe and ensure convenience functions * expand usage of ensure * use convenience functions in GFuncParams * check explicitly for brackets * complete function definition parsing * convert GMarker to enum, set explicit variants * expand tests for function decleration * reorder impls in grammar * cleanup * add comments * rename GType to GPrimitive * add additional type categories * handle parsing of pointers, add unit tests * handle struct parsing * test Unknown type variant * handle markers in function declaration * add test * cleanup warnings * start ParseTree impl for GHeaderInclude * complete ParseTree impl for GHeaderInclude * deprecate GParamItemWithMarker * rename GParamItemWithoutMarker to GParamItem * write simple parse_file test, add GNewline and GAnyLine to grammar * expand * implement ParseTree for GEndOfLine * introduce GHeaderFileItem * introduce GCommentLine and GCommentBlock types * handle comments in GHeaderFileItem * start with impl of handling of structs * expand tests for struct parsing * split tests into smaller files * implement ParseTree for GType, convert function params to GType * fix mutability indicator * handle struct declarations * implement GEnum * fix some warnings * get rid of remaining warnings * handle marker after return value * introduce GReturnValue * update unit test * handle marker for struct * handle #pragma * handle makers directly * reorder grammar module * return in parse_file * implement serde support * rename variant to g_variant * add ASCII only for now * ignore attribute for test_parse_file * handle 'define' attributes, write unit tests * track attributes tests * implement GMarkers type * introduce GMarkers into other G types * convert inner GMarkers field to tuple * remove unused imports * remove double comment * support typedef, add unit test * track typedef unit test module * test with const void TWData * handle typedef and define in GHeaderFileItem * rename GHeaderDefine to GDefine * check for more separators * be more precise with GDefine parsing * more characters tests for define * handle GDefine better * add must_ok and must_err convenience functions * convert must_ok and must_err to macros * add comment * add unit tests for GKeyword * convert From<String> to From<&str> for test cases * cleanup warnings * use must_ok! in type categories unit tests * migrate functions unit tests to macros too * check for separator handling in functions tests * additional tests in functions module * cleanup * rename var * update unit tests for typedef * deprecate some tests * use GKeyword for GTypeCategory internally * make use of GKeyword in GStruct * use GKeyword in GEnum impl * deprecate GTypeCategory::Unknown * fix warnings * rename GStruct to GStructName * migrate primitives tests to must_ok! * migrate other unit tests to must_ok! * update in mod.rs * poc for reading includes * formatting * complete parse_file and parse_dir impl * print unrecognized items in test * remove unused import * add Unrecognized variant for types, used to handle structs as params * explicitly check for GTypeCategory::Unrecognized * add parser for inline comments * start with ParseTree impl for GEnumDecl * adjust comma check for enums * additional unit tests for enum decls * handle enum decl as part of GHeaderFileItem * track tests * expand tests for enum declaration * handle HEX values in enum variant values * implement ParseTree for GStaticVar * add support for static variables * use macro for single character definitions * move macro to root * wipe comment line in enums * write test for number in static var * handle TW_EXPORT_ENUM marker * cleanup * add test for non-parameter functions * typo * rename GStructDecl to GStructInd * implement ParseTree for GStructDecl * add unit tests for GStructDecl * handle struct declarations in primary parser * handle 'extern' functions * track .devcontainer * update .devcontainer * add extension to devcontainer * add README * add minimal main() method * update README * add workflow for codegen-v2 tests * update workflow * add manifest path to cargo test * deprecate GParamName * deprecate GFuncName * removed example.include_manifest.json * GStructName wraps GKeyword * adjust GStruct and GEnum * deprecate wipe, just use optional * rename Continuum types to plural * move define_char! decl to grammar module * rename EitherOr to Either * update comment * remove unnecessary check on GKeyword derive impl * rename GEnum to GEnumName * add more tests for primitives * fix devcontainer * add copyright notice to each Rust file * track Cargo lock and ignore target
Remove Ruslan and my self for every pr notification, feel free to request review if needed
…llet#3922) * [TON]: Add functions to help to generate Jetton user address * [TON]: Rename `TONAddress` module to `TONAddressConverter` * Add ios, android tests * [CI] Trigger CI * [TON]: Fix Android test
…rustwallet#3925) * [TON]: Return non-bounceable address by default * [TON]: `TWTONAddressConverterFromBoc` returns bounceable address * [TON]: Add `TWTONAddressConverterToUserFriendly` function * [TON]: `TWTONAddressConverterFromBoc` returns non-bounceable address * Fix tests * [TON]: Add `TWStoredKeyUpdateAddress` function to update address for a chain * [TON]: Fix generation error
* [Rust]: Update rust toolchain to nightly-2024-06-13 * [Rust]: Revert Dockerfile
Signed-off-by: stellrust <[email protected]>
* [Bitcoin/V2]: Add a `rust/frameworks` directory, move `tw_utxo` there * [Bitcoin/V2]: Add Bitcoin Legacy address implementation * [Bitcoin/V2]: Add `StandardBitcoinAddres` * [Bitcoin/V2]: Add segwit address * Switch to TW Bitcoin Address implementation in `BitcoinEntry` * [Bitcoin/V2]: Implement signAsDER and verifyAsDER used in Bitcoin * [BitcoinV2]: Add standard Unsigned and Signed Transaction declarations * Add and implement Bitcoin encoding for Signed Transaction * [BitcoinV2]: Refactor `TWDerivation` to avoid Coin names * [BitcoinV2]: Refactor preimage hashing * Delegate transaction preimage hashing to `LegacyPreimage`, `Witness0Preimage` helpers * [BitcoinV2]: Design a `TransactionSigner` API * [BitcoinV2]: Design an API for `TransactionPlanner`, `TransactionBuilder` * add Script check methods * cargo fmt * make signing_method optional, try to automatically determine signing method if unavailable * start expanding verify_signatures * add schnorr module to tw_keypair, wip * expand KeyPair impl for schnorr * expand enums in tw module with Schnorr * simplify schnorr module structure * complete SigningKeyTrait and VerifyingKeyTrait impl for KeyPair * complete verify_signatures mechanism * adjust some types, complete compile method * add test interface for signer, wip * handle Schnorr variant in tw_keypair * ignore the recovery byte in ECDSA signature * update comment * specify the keys explicitly in tests * continue debugging * remove UseDefault from SighashBase, use All as default, fix sighash calculation * formatting * add Witness type, correctly consensus-encode items * fix P2WPKH scriptPubkey generation * add standard OPCodes and add convenience functions for Script * complete standard Script builders and checkers * update script submodule structures * build claim scripts for standardized transaction variants * fix Script method call * update comments, use H264 for new_p2pk instead of PublicKey type * small cleanup to push_slice * fix typo * rename Sighash to SighashType * expand TransactionBuilder * adjust builder and add test, wip * update TransactionBuilder, init test, wip * complete build_legacy_tx test * assert in build_legacy_tx * add BitcoinEcdsaSignature type, serialize correctly for claim script * add SER_SIZE const to BitcoinEcdsaSignature * rename TransactionSigner to SighashComputer * add a ClaimBuilder * rename some types * add tests for building Segwit transactions * delete playgrounds * track transaction builder test * add fee calculation traits, implement for standard Transaction, Inputs and Outputs * implement TransactionFee::fee * implement CompactInteger::serialized_len * consider Segwith flag and marker when calculating weight/size/fee * add select_inputs logic to TransactionFee, handle vbyte/size calculation edge case * expand tests with size, vsize and weight calculation * add fee() calculation tests * add input selection tests, wip * add base_size to TransactionFee trait, implement method * move input selection logic out of TransactionFee trait and to ComputedTransaction * add change amount related methods * continue with change output build pattern, wip * mvoe utxo input selector to separate module * complete test for utxo selection with change output generation * add note slight fee difference * extra comments * introduce CompiledSelectionBuilder * add p2tr condition builder functions * add builders for input, claim and output P2TR-key-path scripts * track taproot1_sighash, wip * extra conditions * add tests for Taproot inputs, spending conditions and claims. wip * continue on Taproot sighash calculation, wip * continuing with Taproot Sighash debugging... * add mockup of TapsighHash * extend test, wip * remove unused fields in UtxoPreiamgeArgs * implement Hasher::TapSighash variant * rename TapSighash prefix const * seperate sighash methods on PreimageInterface into legacy/segwit and taproot * move spent_* hashing methods to TransactionHasher * adjust TapSighash workflow to other variants * move tx_hasher and sighash_ty to a per-input basis * add const for Annex indicator * include leaf_hash and separator as part of TapSighash * construct Taproot script-path spending info and merkle root, wip * add p2tr_script_path spending script builder * init asset/ module, move brc20 and ordinals there * adjust brc20 and ordinal code for new changes, add brc20_transfer input builder * separate input builder into individual modules * fix and format * remove unused DEFAULT_TX_HASHER in utxo_selector * build brc20 spending input * build brc20 transfer output * add tweak support to tw_keypair * build brc20 transfer output * add support for non aux rand data when signing for schnorr, complete P2TR key-path test * add test for BRC20 transfer output, fix issue with payload * testing brc20 transfer reveal, wip * finalize brc20 reveal construction with tests * get rid of dbg! * add custom script builders * wipe tw_bitcoin's preimage_hashes_impl, start with utxo builder migration * handle custom script proto builder * start migrating output proto to builder matcher, wip * use SelectionBuilder * expand migration of tw_bitcoin preimage_hashes_impl * create dummy claims for preiamge_hashes_impl * add and handle a UseAll selector * complete construction of proto outputs * add init module with proto_input_to_native function * implement proto_output_to_native * process change output * handle custom script_pubkey outputs * fix signature issue for p2tr_script_path, expand p2wsh impl * set send_to_address tests to ignore for now * remove ignore attribute for ordinals and brc20, all related tests pass * derive P2PKH and P2SH from base58 address * derive P2WSH and P2WPKH from bech32 address * move address to native derivation logic to individual function * init taproot module with TaprootAddress * implement p2tr_with_coin_and_prefix for TaprootAddress, derive from StandardBitcoinAddress * fix tests for reference changes * distinguish between Segwit and Taproot for StandardBitcoinAddress * derive Taproot program from address, do extra witness program check * complete builders for P2WPKH and P2WSH derived from address string * complete legacy P2PKH and P2SH builders derived from address string * move address derivation logic to address_to_native * complete proto builders for p2pkh and p2wpkh from_hash variants * expand output builder for P2SH, both redeem script and hash * expand P2SH input claiming, wip * set ignore attribute to p2sh tests for now * add option to provide sigs to proto_input_to_native, deprecate some legacy code * construct proto return value for compile method * implement txid and fix ownership issue with proto return structure * update tw_bitcoin calls in wallet_core_rs for legacy FFI functions * update p2tr_script_path test module, use updated tw_utxo crate * adjust legacy_script tests to tw_utxo changes * remove unused imports * remove print/dbg statements * remove proto interface for tw_utxo * add proto_input_to_spending_data function * rename to proto_sighash_to_sig * sign sighashes and compile final transaction in tw_bitcon entry * formatting * add todo to fn txid * [Bitcoin]: Cleanups * [Bitcoin]: Fix most of clippy warnings * [Bitcoin]: Refactor schnorr private and public keys * [Bitcoin]: Fix BRC20 tests * [Bitcoin]: Fix txid * [Bitcoin]: Temporary add `BitcoinV3.proto` - refactored API * [Bitcoin]: Deprecate tw_bitcoin/src/modules * [Bitcoin]: Add `TransactionProtobuf` module * [Bitcoin]: Use `TWError<SigningError>` in tw_utxo * [Bitcoin]: Add `UtxoProtobuf` builder * Merge `SigningMethod::TaprootAll` and `SigningMethod::TaprootOnePrevout` * Temporary remove `OrdinalInscription` * [Bitcoin]: Add a `SpendingDataConstructor` pattern * Refactor `UtxoBuilder` to create a corresponding `SpendingDataConstructor` * Slightly refactor `BitcoinV3.proto` API * [Bitcoin]: Finalize UTXO selectors * Add `MaxSelector`, add `SigningInput::max_amount_output` * Refactor `SelectorBuilder` as `ExactSelector` * Add `DustFilter` and `DustPolicy` * Slightly refactor `BitcoinV3.proto` API * [Bitcoin]: Finalize UTXO selectors, split `SighashComputer` * Add `MaxSelector`, add `SigningInput::max_amount_output` * Refactor `SelectorBuilder` as `ExactSelector` * Add `DustFilter` and `DustPolicy` * Slightly refactor `BitcoinV3.proto` API * Split `SighashComputer` into several modules * Finalize `TxCompiler` * Finalize `SighashVerifier` * [Bitcoin]: Add `TxSigner` * [Bitcoin]: Add `OutputProtobuf` builder * Fix Segwit address to not allow witness version > 0 * [Bitcoin]: Refactor `TaprootAddress` and `SegwitAddress` * [Bitcoin]: Add transaction signer * [Bitcoin]: Add transaction planner * [Bitcoin]: Add transaction compiler * [Bitcoin]: Make `TxPlanner` generic * [Bitcoin]: Some clean ups * [Bitcoin]: Remove legacy BRC20 API * [Bitcoin]: Add BRC20 test * Add default chain info if not provided * Add default sequence if not provided * [Bitcoin]: Add P2PKH test * [Bitcoin]: Fix final fee calculation * [Bitcoin]: Add p2tr_key_path * [Bitcoin]: Move unit tests to `tw_any_coin/tests/chains/bitcoin` * [Bitcoin]: Fix `send_to_address` tests * [Bitcoin]: Fix broken tests * [Bitcoin]: Move UTXO selection to `tw_any_coin/tests` * [Bitcoin]: Add exact selector with and without change test * [Bitcoin]: Check transaction weight * Add more exact_selector tests * [Bitcoin]: Add more selector tests, increase code coverage * [Bitcoin]: Add p2pkh compile test * [Bitcoin]: Add mainnet BCH test * Fix fork_id sighashing * [Bitcoin]: Add send to p2sh and p2wsh address tests * Add p2wpkh signing test * Set V1 default transaction version * [Bitcoin]: Add OP_RETURN test * [Bitcoin]: Allow to pass a DER encoded signature to `TransactionCompiler` * [Bitcoin]: Test Bitcoin addresses * [Bitcoin]: Add BRC20 compile tests * [Bitcoin]: Fix transaction weight * [Bitcoin]: Remove legacy FFI TWBitcoinFeeCalculateFee * Return an error if `is_it_brc_operation` is true * [Bitcoin]: Add P2SH output signing test * [Bitcoin]: Add p2tr_script_path output test * Reorg p2tr_key_path tests to cover multiple protobuf types * [Bitcoin]: Fix p2tr custom script * [Bitcoin]: Fix P2PK * Extend P2PKH test to cover all protobuf inputs * Add P2WSH output test * Add sighash single test * [Bitcoin]: Fix some TODOs * [Bitcoin]: Finalize BitcoinV2 * Remove `Bitcoin.SigningInput.is_it_brc_operation` and `Bitcoin.SigningInput.planning_v2` * TODO adopt C++ BRC20 tests for BitcoinV2 * [Bitcoin]: Fix one of Android tests * Add Rust `test_bitcoin_sign_brc20_transfer` test * [Bitcoin]: Uncomment out Android tests * [Bitcoin]: Fix iOS tests * Remove NFT data from Android and iOS test suits * [Bitcoin]: Fix WASM BRC20 tests * [CI] Trigger CI * [Bitcoin]: Minor fixes * [Bitcoin]: Fix Rust WASM tests * [Bitcoin]: Add real P2TR transaction tests * [TON]: Add P2TR test in WASM --------- Co-authored-by: lamafab <[email protected]>
* [TON]: Add TheOpenNetwork Rust blockchain skeleton * [TON]: Add Cell, BoC encoding * Add base64 config * [TON]: Add `RawAddress` and `UserFriendlyAddress` * [TON]: Add `CellBuilder` * [TON]: Add TonAddress user-friendly by default * [TON]: Derive wallet_v4r2 address * [TON]: Add standard TON transfer message * feat(ton): Implement TON's Transaction Signer * Add standard transfer and transfer with state_init tests * feat(ton): Add 'SigningOutput::hash' for better UX * Add more transfer tests * feat(ton): Add Jetton transfer * feat(ton): Add testto check if TransactionCompiler is not supported * feat(ton): Add AddressConverter module * Add `TWTONAddressConverterToBoc`, TWTONAddressConverterFromBoc`, `TWTONAddressConverterToUserFriendly` FFIs * feat(ton): Increase test coverage * feat(ton): Add tests for `CellParser` * feat(ton): Add fuzz test * feat(ton): Add address deriving test * feat(ton): Add address deriving test to `codegen-v2` tool * feat(ton): Add support for custom payload signing * feat(ton): Refactor TheOpenNetwork.proto slightly by moving payload to Transfer message * feat(ton): Remove C++ implementation * feat(ton): Make `CustomPayload` working with `state_init` * [TON]: Fix Android, iOS tests * [CI] Trigger CI * [TON]: Fix rustfmt, clippy warnings * [TON]: Fix WASM tests * [CI]: Try to update kotlin to fix KMP sample * [TON]: Fix critical bugs in BoC encoding * Add Transfer with custom payload tests on Android and iOS
* fix(derivation): Revert codegen, registry.json * fix(derivation): Fix Bitcoin's derivation in Rust * fix(derivation): Fix `BitcoinDerivation::tw_supports_segwit` * fix(derivation): Revert C++ changes * fix(derivation): Fix Swift, Kotlin, JS tests * [CI] Trigger CI
trustwallet#3964) * feat(ton): Add support for `crypto_box` key-pair generation and message encryption * Remove `test_nist256p1_sign_verify_ring` as no longer needed * feat(ton): Add `crypto_box` Rust FFI functions * feat(ton): Add C++ FFI interface * feat(ton): Fix C++ interface * Add Kotlin, Swift tests * [CI] Trigger CI * feat(ton): Fix rustfmt warnings * feat(ton): Fix clippy warnings * feat(ton): Fix C++ tests
…stwallet#3970) * feat(ton): Add `tw_ton_wallet_create_v4_r2_state_init` in Rust * feat(ton): Add `TWTONWalletCreateV4R2StateInit` C FFI * feat(ton): Rename `TWTONWalletCreateV4R2StateInit` to `TWTONWalletBuildV4R2StateInit` for Swift and Kotlin codegen compat * Add iOS, Android tests
Co-authored-by: satoshiotomakan <[email protected]>
Co-authored-by: satoshiotomakan <[email protected]>
…rustwallet#3977) * feat(ton): Add Rust FFI to manipulate the secret's data * feat(ton): Add C++ FFI to manipulate the secret's data * feat(ton): Add Android, iOS tests * [CI] Trigger CI
…h Bitcoin legacy interface (trustwallet#3979) * feat(bitcoin): Fix Taproot signing when tx contains Segwit UTXOs too * feat(bitcoin): Forward preImageHashes, compile requests to Rust * feat(bitcoin): Fix clippy warnings
…t#3985) * feat(ton): Add `tw_ton_message_signer_sign_message` in Rust * feat(ton): Add `TWTONMessageSignerSignMessage` * feat(ton): Add Android, iOS tests * feat(ton): Fix compiling error
…wallet#3984) * Fix: nullptr dereference safeguard when not calling JNI_OnLoad on Android * Chore: Changed handle of urandom from C to C++ ifstream --------- Co-authored-by: satoshiotomakan <[email protected]>
* feat: add solana token 2022 support * feat: add test for token 2022 * fix: code format and unsort solana tx * feat: add solana sign test * fix: solana create and transfer token 2022 test * refactor: format code * fix: revert code for signer * fix: change bool is_token_2022 to enum TokenProgramId * refactor: format code * refactor: format code * refactor: format code Co-authored-by: 0xh3rman <[email protected]> * refactor: format code --------- Co-authored-by: 0xh3rman <[email protected]> Co-authored-by: satoshiotomakan <[email protected]>
* Fixed protobuf-plugin for newer versions of protobuf * Fixed `protobuf` build on `install-dependencies` * Added missing namespace annotation on `protobuf-plugin` --------- Co-authored-by: satoshiotomakan <[email protected]>
* Support TON wallet V5R1 external signed message * Fix the incorrect serialization tag introduced during the refactoring of the code. * Adjust the code according to the comments * Move Proto::Transfer::wallet_version to Proto::SigningInput::wallet_version * Remove unnecessary wallet version check * Fix failed TON test cases
* Support TON tx compiler * Adjust the code according to the comments
…#4005) * Eliminate nondeterminism in TON boc serialization Fix issue trustwallet#4004 * Replace all instances of HashMap with BTreeMap
* Support calculating the TX hash of a transaction * Implement the calc_tx_hash for TON/Aptos/Sui * Adjust the code according to the comments * Refactor the calcTxHash for Solana * Format rust code using `cargo fmt` * Change UtxoTransactionUtil to BitcoinTransactionUtil * Add some comments * Adjust the code according to the comments * Add more test cases * Fix issue found by `cargo clippy`
Co-authored-by: satoshiotomakan <[email protected]>
…-2022 Program (trustwallet#4010) * Add function TWSolanaAddressToken2022Address * Extract common code into a separate function to reduce duplication * Add C++ test cases for TWSolanaAddressToken2022Address
* feat(eth): Add support for EIP-2930 access list * feat(eth): Fix formatting * feat(eth): Fix Rust tests * feat(eth): Fix Rust CI
* feat(btc): Move `tw_bitcoin` to `rust/chains/` * feat(btc): Add PSBT signing of `witness_utxo` * TODO add support for signing of `non_witness_utxo` * TODO add support for PSBT planning * feat(btc): Add PSBT signing of `non_witness_utxo` * feat(btc): Add `planPSBT` * Add `ChainInfo.hrp` * feat(btc): Move all tests from `tw_any_coin` to `tw_tests` * feat(btc): Minor changes in `tw_tests` * feat(btc): Move all tests from `wallet_core_rs` to `tw_tests` * feat(btc): Add `tw_bitcoin_sign_psbt` and `tw_bitcoin_plan_psbt` * feat(btc): Add `TWBitcoinPsbtSign` and `TWBitcoinPsbtPlan` C interface * feat(btc): Add Android, iOS tests * [CI] Trigger CI * chore(codegen): Fix codegen-v2
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge master