Can't remove missing device tracker

I have 1 repair that won't go away.   I was tracking a device and I'm guessing the MAC address changed due to private Wi-Fi addressing, which I have since turned off, but there's no way to repair this.  I get 'unknown error occurred' when I try.

Here's what I have in logs:
Logger: aiohttp.server
Source: custom_components/linksys_velop/repairs.py:46
Integration: Linksys Velop (documentation, issues)
First occurred: 5:52:48 AM (3 occurrences)
Last logged: 5:57:11 AM
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 31, in headers_middleware
response = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 148, in handle
result = await handler(request, **request.match_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 63, in with_admin
return await func(self, request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/repairs/websocket_api.py", line 135, in post
return await super().post(request, flow_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
result = await method(view, request, data, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 298, in async_configure
result = await self._async_handle_step(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 394, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/linksys_velop/repairs.py", line 46, in async_step_confirm_removal
entity_registry.async_get(entity_id=self.data.get("device_id"))
TypeError: EntityRegistry.async_get() got an unexpected keyword argument 'entity_id'

I see what the error is. I'll let you know when it's fixed.

@Wraith324 - I've just pushed 2023.10.1b0. Would you be able to test this please and see if it resolves the issue?

Sure, I'll update now and try it out.

Yes, that seems to have solved it. The repair worked.
Thank you @uvjim for the quick attention to this.

No problem. It's not often I get a repair so it's easy for me to miss testing those bits properly. Feedback helps in those scenarios so, thanks.
I've got no other changes queued up to make so I'll probably release this properly next week.

Super! I loving this integration.  It's about the only thing that works presence-wise for me.


Parsing events crashes on certain files on categories

Hello everyone!
When parsing events on files such as basic.ics.zip, parser crashes since icalendar parses categories as an array and your package expects them to be an object with property "cats" on it. The problem line is in file icalparser.py, 228. Would appreciate some hints on how to fix this, we are using this package uncommitted, so applying patches can be difficult.
Thank you for this package!

You can fairly easily remap the events into an event that has an object with the property cats. Is this still needed? If yes I can hack up a solution for you :-)


Update documentation to fix typos and update consistency

Thank you @holmesadam so much for all these PRs 🙏🏽
and sorry for the delay.
will start testing and review them and will let know if any changes needed.


Adds --update-missing only, to --update phase fields only when not set by fmf

Similar to --update, --update-missing-only sets phase fields via the command line. Unlike --update, values are modified only when fmf did not set them.

Ok, so the poll #2375 results seems to be clear: Let's go with --update-missing as the name.

@psss renamed in 5fa59c9d


Fix codacy badge

It's A now

it still looks broken to me in the preview

weird, can you refresh


Remove superfluous comment

Codecov Report

Merging #1167 into master will not impact coverage.

@@           Coverage Diff           @@
##           master    #1167   +/-   ##
=======================================
  Coverage   96.92%   96.92%
=======================================
  Files          49       49
  Lines        2279     2279
=======================================
  Hits         2209     2209
  Misses         70       70

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 15e9951...fcb79fd. Read the comment docs.


Improve rancher-selinux version parsing logic

The current version parsing logic is not straight forward, this issue is created to remodel it.
Elements to take into consideration:

SELinux Policies are usually versioned, see container-selinux's policy tags and versions
Map the policy version with the tag version

cc @macedogm

We should also check how SUSE's version their own SELinux policies and use that as a base for us - https://build.opensuse.org/package/show/openSUSE:Factory/selinux-policy .


spinalcord_results/ should be fetched from the release, not put under the repository

Currently, CSV results are sitting in this repository. It is not elegant (duplication) and prone to error.
Ideally, the code would fetch the CSV results directly from the GH release assets (eg: https://github.com/courtois-neuromod/anat-processing/releases/tag/r20210610). But, is this possible with notebook?  IIUC we need to provide ALL the sources, so maybe not possible...
or as a workaround, we could potentially have the GH action deployment script fetch those before the build...?

Hi @jcohenadad, so the thing is that file was there by accident.  Earlier this morning I added locally to fix the issues and left them there. In the binder session I am downloading them and unzipping them with the postBuild:
wget -O spinalcord_results.zip https://github.com/courtois-neuromod/anat-processing/releases/download/r20210610/spinalcord_results.zip
unzip -j spinalcord_results.zip -d $HOME/spinalcord_results/

Indeed, I understand now that it is not in the repos, but fetched by the post build. However, if we want full reproducibility of the jupyter notebook, we need the data to be fetched inside the notebook.


deprecating 1.12 config.toml

missed in https://github.com/kubernetes/website/pull/11497

/lgtm
/approve

trying moving lines 78-83 down to starting at line 96?

Adding some context: While updating the config.toml's, we could not get release-1.12 branch to build. Turns out the shortcode needed to be tweaked to support the deprecated html params. This PR updated the deprecated = true but the short code was not fixed. After fixing the shortcode, all is well!


do you need to translate it into Chinese

i like your project, do you need to translate it into Chinese?  i can help you with that.

Windows / IE considers simplified Chinese to be zh-Hans or zh-CN.
Plus there are several other variants.  It would be useful to add further support.


Harvest error

I'm on Alfred 5.5 and Emoji Wine 1.3.0.
When I run "harvest" I get a "something went wrong" error.
Let me know if I can share any additional info that would be useful.
This is all I can see in the logs:
08:32:50.358] Logging Started...
[08:32:54.176] Emoji Wine[Script Filter] Queuing argument '(null)'
[08:32:54.264] Emoji Wine[Script Filter] Script with argv '(null)' finished
[08:32:54.270] Emoji Wine[Script Filter] {"items": [{"title": "Refresh the API", "subtitle": "Press \u23ce to grab emoji data with language : \ud83c\uddec\ud83c\udde7 English", "arg": "_api", "icon": {"path": "icons/sync.webp"}}, {"title": "Tags", "subtitle": "Create, modify or remove tags for \ud83c\uddec\ud83c\udde7 English", "arg": "_rerun;;1;;", "icon": {"path": "icons/tag.webp"}}, {"title": "API information", "subtitle": "Last update : 19-02-2024 08:45:37 \u01c0 3782 Emojis \u01c0 \ud83c\uddec\ud83c\udde7 English", "valid": false, "icon": {"path": "icons/info.webp"}}]}
[08:32:57.488] Emoji Wine[Script Filter] Processing complete
[08:32:57.497] Emoji Wine[Script Filter] Passing output '_api' to Split Arg
[08:32:57.499] Emoji Wine[Split Arg] Processing complete
[08:32:57.500] Emoji Wine[Split Arg] Passing output '_api' to Conditional
[08:32:57.501] Emoji Wine[Conditional] Processing complete
[08:32:57.501] Emoji Wine[Conditional] Passing output '_api' to Run Script

Hello @gabrielwhite, could you download v1.4.0 😉?

Ahh, didn't notice that. Thanks for the quick reply!
Alfred Gallery still has the old version, and I'm loading it from there. Is there a way you can push the update over?

Tell me if that solves your issue. I created a ticket in order to update the workflow to the gallery here as I don't have hands on this.


Server returns HTTP 500 when adding new badlist tag

Describe the bug
When creating a new badlist tag through the Assemblyline UI, the server returns an HTTP 500 error.
To Reproduce
Steps to reproduce the behavior:

Go to Manage -> Badlist
Click on Add an item to the badlist
Select network.dynamic.domain as the tag type, foo.bar as the tag value and lorem ipsum as the Item Details
Save the tag and the server responds with an HTTP 500 error

Expected behavior
In previous versions of AL this would successfully add a tag to the badlist. This feature still works when creating a new tag from an existing submission, it only appears when creating a new badlist item from scratch.
Screenshots

Environment (please complete the following information if pertinent):

Assemblyline Version: <IP_ADDRESS>
Browser: Arc Version 1.66.0 (55166) - Chromium Engine Version 130.0.6723.70

Looks like a bug on the frontend side where the classification isn't being passed forward to the API (and the classification is required for adding an item), you can check the Payload tab to confirm but that's what I'm currently seeing our test system.

Yeah, that is what I'm seeing as well, the classification element is an empty string (i.e. ""), similar to the id value. Is this id value also not meant to be empty?

I believe for adding things to the list, having the id unset is fine because the system has to generate an identifier based on the information of the item.

Could it be that it had a similar root cause as #273 ?

Possibly but not entirely sure.

This should be resolved in the <IP_ADDRESS> release.


[google_maps_flutter] Custom icons do not work on iOS

Steps to Reproduce
I am using google_maps_flutter and want to use a custom icon for the marker. This works on Android, but on iOS it just displays the default marker. I get the following messages in the log when I click on the button to add the marker.
Sample code is supplied below - you will need to provide a bitmap file for the marker.
This is with google_maps_flutter version 0.3.0+1
I have tried the dev and master channels and the problem still exists.
This works in google_map_flutter 0.2.0, when the markers were part of the map controller.
Logs
[+11552 ms] [DEVICE LOG] 2019-02-28 12:41:37.702608+0000  localhost Runner[92988]: (CoreUI) [com.apple.coreui:framework] CUICatalog:
Invalid asset name supplied: '(null)'
[        ] [DEVICE LOG] 2019-02-28 12:41:37.702658+0000  localhost Runner[92988]: (CoreUI) [com.apple.coreui:framework] CUICatalog:
Invalid asset name supplied: '(null)'
[        ] [DEVICE LOG] 2019-02-28 12:41:37.703070+0000  localhost Runner[92988]: (CoreUI) [com.apple.coreui:framework] CUIThemeStore:
No theme registered with id=0

Code
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google Maps Demo',
      home: MapSample(),
    );
  }
}

class MapSample extends StatefulWidget {
  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Completer<GoogleMapController> _controller = Completer();
  Map<MarkerId, Marker> markers = <MarkerId, Marker>{};

  static final CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        markers: Set<Marker>.of(markers.values),
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _addMarker,
        label: Text('Add Marker'),
        icon: Icon(Icons.place),
      ),
    );
  }

  Future<void> _addMarker() async {
    //final GoogleMapController controller = await _controller.future;
    final MarkerId markerId = MarkerId('test_marker');
    final Marker marker = Marker(
      markerId: markerId,
      anchor: Offset(0.5, 0.5),
      icon: BitmapDescriptor.fromAsset('assets/marker.png'),
      position: LatLng(
        37.42796133580664,
        -122.085749655962,
      ),
      infoWindow: InfoWindow.noText,
      zIndex: 5,
    );

    setState(() {
      markers[markerId] = marker;
    });
  }
}

[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.14.3 18D109, locale en-GB)
    • Flutter version 1.2.1 at /Users/samtoon/flutter
    • Framework revision 8661d8aecd (13 days ago), 2019-02-14 19:19:53 -0800
    • Engine revision 3757390fa4
    • Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/samtoon/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = /Users/samtoon/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[!] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    ✗ Verify that all connected devices have been paired with this computer in Xcode.
      If all devices have been paired, libimobiledevice and ideviceinstaller may require updating.
      To update with Brew, run:
        brew update
        brew uninstall --ignore-dependencies libimobiledevice
        brew uninstall --ignore-dependencies usbmuxd
        brew install --HEAD usbmuxd
        brew unlink usbmuxd
        brew link usbmuxd
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.0.rc.2

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 33.3.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code (version 1.31.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.24.0

[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

Hi @sam-toon, thanks for flagging this. I will take a look.

Will be addressed in https://github.com/flutter/plugins/pull/1294

This is addressed by 0.3.0+2. Please try that version. Thanks!


debootstrap --foreign does not produce compatible results

Issue description
The debootstrap script created by debootstrap --foreign in /debootstrap/debootstrap contains a reference to the nix system's sh and dpkg rather an sh and dpkg which can actually be found in the chroot it creates.
Steps to reproduce
# nix-shell -p debootstrap --run 'debootstrap --foreign stretch /some/dir http://http.debian.net/debian'

Technical details

System: 17.03.1482.1b57bf274a (Gorilla)
Nix version: nix-env (Nix) 1.11.11
Nixpkgs version: "17.03.1482.1b57bf274a"
Sandboxing enabled:  true

Actually, this is probably an upstream bug.

Debootstrap has seen some fixes since, needs to be tried again

It's still broken.


Feature Request: Debug actions/Console commands

This would help a lot with testing. Just a way to call certain functions from in-game. Like a suicide command, set level, max gold, etc.

Setting parameters to a certain value can be done via the remote debug functionality of Godot. Also if you want to adjust the gold of a player you can modify the persistent file. I use it quite often.

Good point, altho there's also the chance for server owners to simply tweak stuff without the need of the editor or simply cheat in their own environment.
Altho that would turn this into a low priority, so i'll close it for now.


added a lightweightchart in the folder

i have created a folder called bhavana where i added a html file for lightweight chart. please refer it and add it to the existing code .

Add it to original code directly. We don't have much time to reorganize the code if we create separate folder for each feature.

Also please don't make 1000+ lines code contribution in one commit. Split it into different parts. Else I will get a headache while reviewing them. 😓. Just imagine you have to read 1000+ line of code in one go.

You can close pull request if you want and start from new or you can use git rebase for commit modification.


App Compliance Automation Content Validation Issue for github.io website

Section link1:

Reason:
Format validation Issue: Text exceeds page size, there are 10 such errors on this page.

Section link1:

Reason:
Format validation Issue: Extra symbols -.

Section link1:

Reason:
Typing annotation Issue: Please unify the format, update to *args:Any, **kwargs:Any or *args, **kwargs.

Section link1:

Reason:
Format validation Issue: Extra symbols _.
@rohit-ganguly, @lmazuel for notification.

Close this issue as we'll put it into a summarzied one.


Complex switch cannot be decompiled correctly

Complex switch cannot be decompiled correctly
Windows 10
VS2022
        page    ,132
        title   memcpy - Copy source memory bytes to destination
;***
;memcpy.asm - contains memcpy and memmove routines
;
;       Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
;       memcpy() copies a source memory buffer to a destination buffer.
;       memmove() copies a source memory buffer to a destination buffer.
;       Overlapping buffers are treated specially, to avoid propagation.
;
;Entry:
;       void *dst (rcx) - pointer to destination buffer
;       const void *src (rdx) - pointer to source buffer
;       size_t count (r8) - number of bytes to copy
;
;Exit:
;       Returns a pointer to the destination buffer (rax)
;
;*******************************************************************************

include ksamd64.inc
        subttl  "memcpy"

IFDEF _CRT_FFS_BUILD
memcpy_name     TEXTEQU <memcpy_ffs>
memmove_name    TEXTEQU <memmove_ffs>
ELSE
memcpy_name     TEXTEQU <memcpy>
memmove_name    TEXTEQU <memmove>
ENDIF

; the code implementing memory copy via rep movsb (enhanced strings)
; needs to be in a separate routine to be able to generate EH records
; that can used to restore non-volatile register value during EH unwinding

; Note: This is placed in a separate coffgroup along with a few other
; mem routines. See https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1720249
        NESTED_ENTRY memcpy_repmovs, _TEXT$21

        push_reg rdi
        push_reg rsi
        .endprolog

        mov      rdi, rcx                                        ; copy arguments into rep movsb inputs and execute the instruction
        mov      rsi, rdx
        mov      rcx, r8
        rep      movsb

        .beginepilog
        pop      rsi
        pop      rdi
        ret

        NESTED_END memcpy_repmovs, _TEXT$21

;*******************************************************************************
;        Main memmove/memcpy routine implementation
;
;    the implementation follows this approach:
;   1. for blocks less than 16 bytes in size use loads and stores through general registers
;   2. for blocks 16-32 bytes in size use two (possibly overlapping) loads and stores through SSE registers
;   3. for blocks 33-8K bytes in size use AVX (if available) or SSE loads and stores
;   4. for blocks 8K+1-256K bytes in size use enhanced strings (if available),
;      if not continue using AVX or SSE loads and stores
;   5. for blocks greater than 256K size use non-temporal AVX stores (if available), or enhanced strings (if available),
;      or SSE loads and stores.
;

        __FAVOR_ENFSTRG equ 1
        __ISA_AVAILABLE_AVX equ 3
        KB equ 1024

        public memmove_name

; Note: This is placed in a separate coffgroup along with a few other
; mem routines. See https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1720249
        LEAF_ENTRY_ARG3 memcpy_name, _TEXT$21, dst:ptr byte, src:ptr byte, count:dword

        OPTION PROLOGUE:NONE, EPILOGUE:NONE

        memmove_name = memcpy_name

        extrn    __favor:byte
        extrn    __ImageBase:byte
        extrn    __isa_available:dword

        mov      rax, rcx                                        ; pre-set the return value
        lea      r10, OFFSET __ImageBase                         ; pre-set the image base to be used in table based branching
        cmp      r8, 15                                          ; dispatch to code handling block sizes of 16 bytes or more
        ja       MoveAbove15                                     ; fall-thru to code handling length of 15 bytes or less

;
;   move blocks of less than 16 bytes in length
;
;   Entry:
;      r8 - length < 16
;      rcx - destination block address
;      rdx - source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is implemented through an indirect branch dispatch using the block length as an index
;      into the table of code labels where each entry points to the code block implementing the copy of this particular length
;      each block implements memory copy using the appropriate combination of loads and stores through general registers
;

        align    16
IFDEF _VCRUNTIME_BUILD_QSPECTRE
        and      r8, 0Fh
ENDIF
        mov      r9d, [(IMAGEREL MoveSmall) + r10 + r8*4]        ; load the appropriate code label RVA from the table (r9) using the length (r8) as an index
        add      r9, r10                                         ; convert the RVA into the VA
        jmp      r9                                              ; dispatch to the code
MoveSmall0::
        ret

        align    16
MoveSmall15::
        mov      r8, QWORD PTR [rdx]                             ; handle 15 bytes (8+4+2+1)
        mov      ecx, DWORD PTR (8)[rdx]
        movzx    r9d, WORD PTR (12)[rdx]
        movzx    r10d, BYTE PTR (14)[rdx]
        mov      [rax], r8
        mov      (8)[rax], ecx
        mov      (12)[rax], r9w
        mov      (14)[rax], r10b
        ret
MoveSmall11::
        mov      r8, QWORD PTR [rdx]                             ; handle 11 bytes (8+2+1)
        movzx    ecx, WORD PTR (8)[rdx]
        movzx    r9d, BYTE PTR (10)[rdx]
        mov      [rax], r8
        mov      (8)[rax], cx
        mov      (10)[rax], r9b
        ret
MoveSmall2::
        movzx    ecx, WORD PTR [rdx]                             ; handle 2 bytes (2)
        mov      [rax], cx
        ret

        align    16
MoveSmall7::
        mov      ecx, DWORD PTR [rdx]                            ; handle 7 bytes (4+2+1)
        movzx    r8d, WORD PTR (4)[rdx]
        movzx    r9d, BYTE PTR (6)[rdx]
        mov      [rax], ecx
        mov      (4)[rax], r8w
        mov      (6)[rax], r9b
        ret
MoveSmall14::
        mov      r8, QWORD PTR [rdx]                             ; handle 14 bytes (8+4+2)
        mov      ecx, DWORD PTR (8)[rdx]
        movzx    r9d, WORD PTR (12)[rdx]
        mov      [rax], r8
        mov      (8)[rax], ecx
        mov      (12)[rax], r9w
        ret
MoveSmall3::
        movzx    ecx, WORD PTR [rdx]                             ; handle 3 bytes (2+1)
        movzx    r8d, BYTE PTR (2)[rdx]
        mov      [rax], cx
        mov      (2)[rax], r8b
        ret

        align    16
MoveSmall13::
        mov      r8, QWORD PTR [rdx]                             ; handle 13 bytes (8+4+1)
        mov      ecx, DWORD PTR (8)[rdx]
        movzx    r9d, BYTE PTR (12)[rdx]
        mov      [rax], r8
        mov      (8)[rax], ecx
        mov      12[rax], r9b
        ret
MoveSmall10::
        mov      r8, QWORD PTR [rdx]                             ; handle 10 bytes (8+2)
        movzx    ecx, WORD PTR (8)[rdx]
        mov      [rax], r8
        mov      (8)[rax], cx
        ret
MoveSmall9::
        mov      r8, QWORD PTR [rdx]                             ; handle 9 bytes (8+1)
        movzx    ecx, BYTE PTR (8)[rdx]
        mov      [rax], r8
        mov      (8)[rax], cl
        ret
MoveSmall12::
        mov      r8, QWORD PTR [rdx]                             ; handle 12 bytes (8+4)
        mov      ecx, DWORD PTR (8)[rdx]
        mov      [rax], r8
        mov      (8)[rax], ecx
        ret

        align    16
MoveSmall6::
        mov      ecx, DWORD PTR [rdx]                            ; handle 6 bytes (4+2)
        movzx    r8d, WORD PTR (4)[rdx]
        mov      [rax], ecx
        mov      (4)[rax], r8w
        ret
MoveSmall5::
        mov      ecx, DWORD PTR [rdx]                            ; handle 5 bytes (4+1)
        movzx    r8d, BYTE PTR (4)[rdx]
        mov      [rax], ecx
        mov      (4)[rax], r8b
        ret
MoveSmall8::
        mov      rcx, QWORD PTR [rdx]                            ; handle 8 bytes (8)
        mov      [rax], rcx
        ret
MoveSmall1::
        movzx    ecx, BYTE PTR [rdx]                             ; handle 1 byte (1)
        mov      [rax], cl
        ret
MoveSmall4::
        mov      ecx, DWORD PTR [rdx]                            ; handle 4 bytes (4)
        mov      [rax], ecx
        ret

;
;   move blocks of 16 bytes or more in length
;
        align    16
MoveAbove15:
        cmp      r8, 32                                          ; dispatch to code handling blocks over 32 bytes in length
        ja       MoveAbove32                                     ; fall-through to code handling blocks between 16 and 32 in length

;
;   move blocks between 16 and 32 bytes in length
;
;   Entry:
;      r8 - length (16-32 bytes)
;      rcx - destination block address
;      rdx - source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is implemented with two SSE loads and stores using XMM registers
;      the first 16-byte load/store moves the first 16 bytes beginning at the blocks' start addresses
;      the second 16-byte load/store moves the remaining bytes beginning at the adjusted address
;      with the load/store tail covering the remaining length
;
        movdqu   xmm1, XMMWORD PTR [rdx]
        movdqu   xmm2,  XMMWORD PTR (-16)[rdx + r8]
        movdqu   XMMWORD PTR [rcx], xmm1
        movdqu   XMMWORD PTR (-16)[rcx + r8], xmm2
        ret

;
;   move blocks of 32 bytes or more in length
;
MoveAbove32:
        lea      r9, [rdx + r8]                                  ; check if the destination block starts in the middle of the source block
        cmp      rcx, rdx                                        ; i.e. src (rdx) < dst (rcx) < src + len (rdx+r8)
        cmovbe   r9, rcx
        cmp      rcx, r9
        jb       CopyDown                                        ; if it is copying the block requires using the special ("copy down") implementation

;
;   regular ("copy up") fast implementation
;
        cmp      __isa_available, __ISA_AVAILABLE_AVX            ; check if the HW supports wider AVX copies
        jb       NoAVX                                           ; if not, use the SSE based implementation

;
;      AVX based implementation
;

        __AVX_LEN_BIT equ 5
        __AVX_STEP_LEN equ 1 SHL __AVX_LEN_BIT
        __AVX_LOOP_LEN equ __AVX_STEP_LEN*8
        __FAST_STRING_AVX_THRESHOLD equ 8*KB
        __NT_AVX_THRESHOLD equ 1536*KB                           ; must be greater than or equal to __FAST_STRING_AVX_THRESHOLD

        cmp      r8, __FAST_STRING_AVX_THRESHOLD                 ; it's best to use AVX loads with regular stores to copy blocks up to a certain threshold (__FAST_STRING_AVX_THRESHOLD) in length
        jbe      MoveWithYMM                                     ; check the block length (r8) and dispatch to the regular AVX code

        cmp      r8, __NT_AVX_THRESHOLD                          ; it's best to use AVX loads with non-temporal stores to copy blocks above a certain threshold (__NT_AVX_THRESHOLD) in length
        ja       MoveWithYMM                                     ; check the block length (r8) and dispatch to the AVX code that will take care of dispatching to the non-temporal version

        test     __favor, 1 SHL __FAVOR_ENFSTRG                  ; it's best to use "fast string" rep movsb (if present) to copy blocks above __FAST_STRING_AVX_THRESHOLD and up to __NT_THRESHOLD in length
        jnz      memcpy_repmovs                                  ; if "fast string" rep movsb is not present fall-through to regular AVX code

;
;   move memory with AVX loads and stores
;
;   Entry:
;      r8 - length (> 32 bytes)
;      rcx - destination block address
;      rdx - source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is based on a loop with eight AVX loads and stores copying 256 bytes in an iteration with the remainder (or blocks themselves)
;      handled through a table based dispatch to the code that handles the remaining length with the appropriate number of AVX loads and stores
;

MoveWithYMM:
        vmovdqu  ymm0, YMMWORD PTR (-__AVX_STEP_LEN*0)[rdx]      ; save the first 32-byte chunk which may be overwritten while copying overlapping blocks with destination not 32-byte aligned
        vmovdqu  ymm5, YMMWORD PTR (-__AVX_STEP_LEN*1)[rdx + r8] ; save the last 32-byte chunk which may be overwritten by the next to last AVX store
        cmp      r8, __AVX_LOOP_LEN                              ; blocks up to the loop iteration size (256 bytes) go straight to the loop remainder handling code
        jbe      MovUpTo256WithYMM                               ; fall-through to the loop code for blocks greater than the loop iteration size (256 bytes)

        mov      r9, rcx                                         ; it is generally profitable to align the loop stores on the 32-byte boundary, this is done by shifting
        and      r9, __AVX_STEP_LEN-1                            ; the starting source (rdx) and destination (rcx) copy addresses by the number of bytes (complement r9) required
        sub      r9, __AVX_STEP_LEN                              ; to make the destination block aligned on the next 32-byte boundary and reducing the loop copy length accordingly,
        sub      rcx, r9                                         ; the skipped head bytes will be copied in the remainder handling code;
        sub      rdx, r9
        add      r8, r9
        cmp      r8, __AVX_LOOP_LEN                              ; compare the block copy length (which may have gotten shorter) to the loop iteration length,
        jbe      MovUpTo256WithYMM                               ; if it is less than it go to the loop remainder handling code

        cmp      r8, __NT_AVX_THRESHOLD                          ; blocks greater than a certain threshold are best handled with non-temporal stores
        ja       YmmLoopNT                                       ; for blocks up to this threshold fall-through to the regular AVX loop

;
;    move > 256 bytes with an AVX based loop
;
;   Entry:
;      r8 - length (> 256 bytes)
;      rcx - destination block address (32-byte aligned)
;      rdx - source block address
;   Exit:
;      r8 - remaining length (< 256 bytes)
;      rcx - remaining destination block address
;      rdx - remaining source block address
;      rax - destination block address
;
;   Implementation:
;      each iteration copies 256 bytes through two sets of 4 AVX loads and 4 AVX stores using YMM registers
;
       align     16
YmmLoop:
        vmovdqu  ymm1, YMMWORD PTR (__AVX_STEP_LEN*0)[rdx]       ; load the first set of 128 bytes from source
        vmovdqu  ymm2, YMMWORD PTR (__AVX_STEP_LEN*1)[rdx]
        vmovdqu  ymm3, YMMWORD PTR (__AVX_STEP_LEN*2)[rdx]
        vmovdqu  ymm4, YMMWORD PTR (__AVX_STEP_LEN*3)[rdx]
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*0)[rcx], ymm1       ; store the first set of 128 bytes to destination
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*1)[rcx], ymm2
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*2)[rcx], ymm3
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*3)[rcx], ymm4
        vmovdqu  ymm1, YMMWORD PTR (__AVX_STEP_LEN*4)[rdx]       ; load the second set of 128 bytes from source
        vmovdqu  ymm2, YMMWORD PTR (__AVX_STEP_LEN*5)[rdx]
        vmovdqu  ymm3, YMMWORD PTR (__AVX_STEP_LEN*6)[rdx]
        vmovdqu  ymm4, YMMWORD PTR (__AVX_STEP_LEN*7)[rdx]
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*4)[rcx], ymm1       ; store the second set of 128 bytes to destination
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*5)[rcx], ymm2
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*6)[rcx], ymm3
        vmovdqa  YMMWORD PTR (__AVX_STEP_LEN*7)[rcx], ymm4
        add      rcx, __AVX_LOOP_LEN                             ; advance destination address
        add      rdx, __AVX_LOOP_LEN                             ; advance source address
        sub      r8, __AVX_LOOP_LEN                              ; adjust remaining length
        cmp      r8, __AVX_LOOP_LEN                              ; if at least 256 bytes remain to be copied do another iteration
        jae      YmmLoop                                         ; otherwise fall-through to the remainder handling code

;
;   move up to 256 bytes using AVX loads and stores
;
;   Entry:
;      r8 - length (<= 256 bytes)
;      rcx - remaining destination block address
;      rdx - remaining source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is implemented through an indirect branch dispatch using the number of remaining 32-byte copies as an index
;      into the table of staggered code labels where each entry points to the beginning code address that will handle the remaining length
;

MovUpTo256WithYMM:
        lea      r9, (__AVX_STEP_LEN-1)[r8]                      ; calculate the length of full 32-byte blocks (r9) required to handle the remaining length (r8), i.e. (0 for 0 length, 1 for 1-32,
        and      r9, -__AVX_STEP_LEN                             ; 2 for 33-64, etc.), this number will be used as a base to calculate the source and destination block addresses for remaining copies
        mov      r11, r9                                         ; also use this number to calculate the number of copies (r11) required to handle the remaining length
        shr      r11, __AVX_LEN_BIT
IFDEF _VCRUNTIME_BUILD_QSPECTRE
        and      r11, 0Fh
ENDIF
        mov      r11d, [(IMAGEREL MoveSmallYmm) + r10 + r11*4]   ; load the appropriate code label RVA from the table using the number of remaining copies (r11) as an index
        add      r11, r10                                        ; convert the RVA into the VA
        jmp      r11                                             ; dispatch to the code

Mov8YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*8)[rdx + r9] ; entry point to perform 8 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*8)[rcx + r9], ymm1
Mov7YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*7)[rdx + r9] ; entry point to perform 7 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*7)[rcx + r9], ymm1
Mov6YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*6)[rdx + r9] ; entry point to perform 6 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*6)[rcx + r9], ymm1
Mov5YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*5)[rdx + r9] ; entry point to perform 5 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*5)[rcx + r9], ymm1
Mov4YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*4)[rdx + r9] ; entry point to perform 4 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*4)[rcx + r9], ymm1
Mov3YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*3)[rdx + r9] ; entry point to perform 3 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*3)[rcx + r9], ymm1
Mov2YmmBlocks::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*2)[rdx + r9] ; entry point to perform 2 remaining copies
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*2)[rcx + r9], ymm1
Mov1YmmBlocks::
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*1)[rcx + r8], ymm5 ; entry point to perform 1 remaining copy - store the previously saved last 32 byte chunk
Mov0YmmBlocks::
        vmovdqu  YMMWORD PTR [rax], ymm0                         ; store the previously saved first 32 byte chunk that may have been skipped by aligning the destination
        vzeroupper                                               ; clean up upper AVX
        ret

;
;   move > 256 bytes with an AVX based loop using non-temporal stores
;
;   Entry:
;      r8 - length (> 256 bytes)
;      rcx - destination block address (32-byte aligned)
;      rdx - source block address
;   Exit:
;      r8 - remaining length (< 256 bytes)
;      rcx - remaining destination block address
;      rdx - remaining source block address
;      rax - destination block address
;
;   Implementation:
;      each iteration copies 256 bytes through two sets of 4 AVX loads and 4 non-temporal AVX stores using YMM registers
;
       align   16
YmmLoopNT:
        vmovdqu  ymm1, YMMWORD PTR (__AVX_STEP_LEN*0)[rdx]       ; load the first set of 128 bytes from source
        vmovdqu  ymm2, YMMWORD PTR (__AVX_STEP_LEN*1)[rdx]
        vmovdqu  ymm3, YMMWORD PTR (__AVX_STEP_LEN*2)[rdx]
        vmovdqu  ymm4, YMMWORD PTR (__AVX_STEP_LEN*3)[rdx]
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*0)[rcx], ymm1       ; store the first set of 128 bytes to destination
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*1)[rcx], ymm2
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*2)[rcx], ymm3
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*3)[rcx], ymm4
        vmovdqu  ymm1, YMMWORD PTR (__AVX_STEP_LEN*4)[rdx]       ; load the second set of 128 bytes from source
        vmovdqu  ymm2, YMMWORD PTR (__AVX_STEP_LEN*5)[rdx]
        vmovdqu  ymm3, YMMWORD PTR (__AVX_STEP_LEN*6)[rdx]
        vmovdqu  ymm4, YMMWORD PTR (__AVX_STEP_LEN*7)[rdx]
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*4)[rcx], ymm1       ; store the second set of 128 bytes to destination
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*5)[rcx], ymm2
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*6)[rcx], ymm3
        vmovntdq YMMWORD PTR (__AVX_STEP_LEN*7)[rcx], ymm4
        add      rcx, __AVX_LOOP_LEN                             ; advance destination address
        add      rdx, __AVX_LOOP_LEN                             ; advance source address
        sub      r8, __AVX_LOOP_LEN                              ; adjust remaining length
        cmp      r8, __AVX_LOOP_LEN                              ; if at least 256 bytes remain to be copied do another iteration
        jae      YmmLoopNT                                       ; otherwise fall-through to the remainder handling code

;
;   move <= 256 bytes using YMM loads and non-temporal stores
;
;   Entry:
;      r8 - length (<= 256 bytes)
;      rcx - remaining destination block address (32-byte aligned)
;      rdx - remaining source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is implemented through an indirect branch dispatch using the number of remaining 32-byte copies as an index
;      into the table of staggered code labels where each entry points to the beginning address of code that will handle the remaining length
;
        lea      r9, (__AVX_STEP_LEN-1)[r8]                      ; calculate the length of full 32-byte blocks (r9) required to handle the remaining length (r8), i.e. (0 for 0 length, 1 for 1-32,
        and      r9, -__AVX_STEP_LEN                             ; 2 for 33-64, etc.), this number will be used as a base to calculate the source and destination block addresses for remaining copies
        mov      r11, r9                                         ; also use this number to calculate the number of copies (r11) required to handle the remaining length
        shr      r11, __AVX_LEN_BIT
IFDEF _VCRUNTIME_BUILD_QSPECTRE
        and      r11, 0Fh
ENDIF
        mov      r11d, [(IMAGEREL MoveSmallYmmNT) + r10 + r11*4] ; load the appropriate code label RVA from the table using the number of remaining copies (r11) as an index
        add      r11, r10                                        ; convert the RVA into the VA
        jmp      r11                                             ; dispatch to the code

Mov8YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*8)[rdx + r9] ; entry point to perform 8 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*8)[rcx + r9], ymm1
Mov7YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*7)[rdx + r9] ; entry point to perform 7 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*7)[rcx + r9], ymm1
Mov6YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*6)[rdx + r9] ; entry point to perform 6 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*6)[rcx + r9], ymm1
Mov5YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*5)[rdx + r9] ; entry point to perform 5 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*5)[rcx + r9], ymm1
Mov4YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*4)[rdx + r9] ; entry point to perform 4 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*4)[rcx + r9], ymm1
Mov3YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*3)[rdx + r9] ; entry point to perform 3 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*3)[rcx + r9], ymm1
Mov2YmmBlocksNT::
        vmovdqu  ymm1, YMMWORD PTR (-__AVX_STEP_LEN*2)[rdx + r9] ; entry point to perform 2 remaining copies
        vmovntdq YMMWORD PTR (-__AVX_STEP_LEN*2)[rcx + r9], ymm1
Mov1YmmBlocksNT::
        vmovdqu  YMMWORD PTR (-__AVX_STEP_LEN*1)[rcx + r8], ymm5 ; entry point to perform 1 remaining copy - store the previously saved last 32 byte chunk (destination may be unaligned)
Mov0YmmBlocksNT::
        vmovdqu  YMMWORD PTR [rax], ymm0                         ; store the previously saved first 32 byte chunk (destination may be unaligned)
        sfence                                                   ; non-temporal stores require sfence to maintain memory semantics
        vzeroupper                                               ; clean up upper AVX
        ret

;
;      SSE based implementation
;

       align     16
NoAVX:
        __SSE_LEN_BIT equ 4
        __SSE_STEP_LEN equ 1 SHL __SSE_LEN_BIT
        __SSE_LOOP_LEN equ __SSE_STEP_LEN*8
        __FAST_STRING_SSE_THRESHOLD equ 2*KB

        cmp      r8, __FAST_STRING_SSE_THRESHOLD                 ; it's best to use SSE loads with regular stores to copy blocks up to a certain threshold (__FAST_STRING_SSE_THRESHOLD) in length
        jbe      MoveWithXMM                                     ; check the block length (r8) and dispatch to regular SSE code

        test     __favor, 1 SHL __FAVOR_ENFSTRG                  ; it's best to use "fast string" rep movsb (if present) to copy blocks above __FAST_STRING_SSE_THRESHOLD
        jnz      memcpy_repmovs                                  ; if "fast string" rep movsb is not present fall-through to regular SSE code

;
;   move memory with SSE loads and stores
;
;   Entry:
;      r8 - length (> 32 bytes)
;      rcx - destination block address
;      rdx - source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is based on a loop with eight SSE loads and stores copying 128 bytes in an iteration with the remainder (or blocks themselves)
;      handled through a table based dispatch to the code that handles the remaining length with the appropriate number of SSE loads and stores
;

MoveWithXMM:
        movdqu   xmm0, XMMWORD PTR (-__SSE_STEP_LEN*0)[rdx]      ; save the first 16-byte chunk which may be overwritten while copying overlapping blocks with destination not 16-byte aligned
        movdqu   xmm5, XMMWORD PTR (-__SSE_STEP_LEN*1)[rdx + r8] ; save the last 16-byte chunk which may be overwritten by the next to last SSE store
        cmp      r8, __SSE_LOOP_LEN                              ; blocks up to the loop iteration size (128 bytes) go straight to the loop remainder handling code
        jbe      MovUpTo128WithXMM                               ; fall-through to the loop code for blocks greater than the loop iteration size (128 bytes)

        mov      r9, rcx                                         ; it is generally profitable to align the loop stores on the 16-byte boundary, this is done by shifting
        and      r9, __SSE_STEP_LEN-1                            ; the starting source (rdx) and destination (rcx) copy addresses by the number of bytes (complement r9) required
        sub      r9, __SSE_STEP_LEN                              ; to make the destination block aligned on the next 16-byte boundary and reducing the loop copy length accordingly,
        sub      rcx, r9                                         ; the skipped head bytes will be copied in the remainder handling code;
        sub      rdx, r9
        add      r8, r9
        cmp      r8, __SSE_LOOP_LEN                              ; compare the block copy length (that may have gotten shorter) to the loop iteration length,
        jbe      MovUpTo128WithXMM                               ; if it is less than it go to the loop remainder handling code

;
;    move > 128 bytes with an AVX based loop
;
;   Entry:
;      r8 - length (> 128 bytes)
;      rcx - destination block address (16-byte aligned)
;      rdx - source block address
;   Exit:
;      r8 - remaining length (< 128 bytes)
;      rcx - remaining destination block address
;      rdx - remaining source block address
;      rax - destination block address
;
;   Implementation:
;      each iteration copies 128 bytes through two sets of 4 SSE loads and 4 SSE stores using XMM registers
;
        align    16
XmmLoop:
        movdqu   xmm1, XMMWORD PTR (__SSE_STEP_LEN*0)[rdx]       ; load the first set of 64 bytes from source
        movdqu   xmm2, XMMWORD PTR (__SSE_STEP_LEN*1)[rdx]
        movdqu   xmm3, XMMWORD PTR (__SSE_STEP_LEN*2)[rdx]
        movdqu   xmm4, XMMWORD PTR (__SSE_STEP_LEN*3)[rdx]
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*0)[rcx], xmm1       ; store the first set of 64 bytes to destination
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*1)[rcx], xmm2
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*2)[rcx], xmm3
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*3)[rcx], xmm4
        movdqu   xmm1, XMMWORD PTR (__SSE_STEP_LEN*4)[rdx]       ; load the second set of 64 bytes from source
        movdqu   xmm2, XMMWORD PTR (__SSE_STEP_LEN*5)[rdx]
        movdqu   xmm3, XMMWORD PTR (__SSE_STEP_LEN*6)[rdx]
        movdqu   xmm4, XMMWORD PTR (__SSE_STEP_LEN*7)[rdx]
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*4)[rcx], xmm1       ; store the second set of 64 bytes to destination
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*5)[rcx], xmm2
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*6)[rcx], xmm3
        movdqa   XMMWORD PTR (__SSE_STEP_LEN*7)[rcx], xmm4
        add      rcx, __SSE_LOOP_LEN                             ; advance destination address
        add      rdx, __SSE_LOOP_LEN                             ; advance source address
        sub      r8, __SSE_LOOP_LEN                              ; adjust remaining length
        cmp      r8, __SSE_LOOP_LEN                              ; if at least 128 bytes remain to be copied do another iteration
        jae      XmmLoop                                         ; otherwise fall-through to the remainder handling code

;
;   move up to 128 bytes using SSE loads and stores
;
;   Entry:
;      r8 - length (<= 128 bytes)
;      rcx - remaining destination block address
;      rdx - remaining source block address
;   Exit:
;      rax - destination block address
;
;   Implementation:
;      the operation is implemented through an indirect branch dispatch using the number of remaining 16-byte copies as an index
;      into the table of staggered code labels where each entry points to the beginning address of code that will handle the remaining length
;

MovUpTo128WithXMM:
        lea      r9, (__SSE_STEP_LEN-1)[r8]                      ; calculate the length of full 16-byte blocks (r9) required to handle the remaining length (r8), i.e. (0 for 0 length, 1 for 1-16
        and      r9, -__SSE_STEP_LEN                             ; 2 for 17-32, etc.), this number will be used as a base to calculate the source and destination block addresses for remaining copies
        mov      r11, r9                                         ; also use this number to calculate the number of copies (r11) required to handle the remaining length
        shr      r11, __SSE_LEN_BIT
IFDEF _VCRUNTIME_BUILD_QSPECTRE
        and      r11, 0Fh
ENDIF
        mov      r11d, [(IMAGEREL  MoveSmallXmm) + r10 + r11*4]  ; load the appropriate code label RVA from the table using the number of remaining copies (r11) as an index
        add      r11, r10                                        ; convert the RVA into the VA
        jmp      r11                                             ; dispatch to the code

Mov8XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*8)[rdx + r9] ; entry point to perform 8 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*8)[rcx + r9], xmm1
Mov7XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*7)[rdx + r9] ; entry point to perform 7 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*7)[rcx + r9], xmm1
Mov6XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*6)[rdx + r9] ; entry point to perform 6 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*6)[rcx + r9], xmm1
Mov5XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*5)[rdx + r9] ; entry point to perform 5 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*5)[rcx + r9], xmm1
Mov4XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*4)[rdx + r9] ; entry point to perform 4 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*4)[rcx + r9], xmm1
Mov3XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*3)[rdx + r9] ; entry point to perform 3 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*3)[rcx + r9], xmm1
Mov2XmmBlocks::
        movdqu   xmm1, XMMWORD PTR (-__SSE_STEP_LEN*2)[rdx + r9] ; entry point to perform 2 remaining copies
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*2)[rcx + r9], xmm1
Mov1XmmBlocks::
        movdqu   XMMWORD PTR (-__SSE_STEP_LEN*1)[rcx + r8], xmm5 ; entry point to perform 1 remaining copy - store the previously saved last 16 byte chunk
Mov0XmmBlocks::
        movdqu   XMMWORD PTR [rax], xmm0                         ; store the previously saved first 16 byte chunk
        ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; memmove
;
; The source address is less than the destination address and the buffers overlap. Move bytes down using SSE registers.
;
;   Entry:
;      r8 - length (> 32 bytes)
;      rcx - destination block address
;      rdx - source block address
;   Exit:
;      rax - destination block address
;
        align    16
CopyDown:
        movups   xmm2, [rdx]             ; load lowest 16 bytes, which includes remainder
        sub      rdx, rcx
        add      rcx, r8                 ; make rcx point one past the end of the dst buffer
        movups   xmm0, -16[rcx + rdx]    ; load deferred bytes
        sub      rcx, 16                 ; reduce dst addr
        sub      r8, 16                  ; r8 -= 16 in case aligned

;
; Aligned stores using movaps or movups are faster on AMD hardware than unaligned
; stores using movups. To achieve 16-byte dest alignment, we do an unaligned move
; of the last 16 bytes of the buffers, then reduce rcx only by the amount necessary
; to achieve alignment. This results in some bytes getting copied twice, unless we're
; already aligned.
;
; We know the src address is less than the dst, but not by exactly how much. In the
; case where the difference is less than 16, we must be careful about the bytes
; that will be stored twice. We must do both loads before either store, or the
; second load of those bytes will get the wrong values. We handle this by
; deferring the store of 16 aligned bytes to the remainder code, so it can load the
; remainder before storing the deferred bytes. Since either or both of the two
; loops can be skipped, the preconditions needed by the remainder code must
; also apply to the loops. These conditions are:
;  - r8 is the count remaining, not including the deferred bytes
;  - [rcx] points one past the end of the remainder bytes
;  - rdx is the offset from the dst to the source
;  - xmm0 holds the 16 deferred bytes that need to be stored at [rcx]
;
        test     cl, 0Fh                 ; test if dest aligned
        jz       XmmMovLargeTest         ; go try 128-byte blocks
;
; Move alignment bytes.
;
XmmMovAlign:
        mov      r9, rcx                 ; save unaligned store address
        and      rcx, -16                ; rcx is deferred store address
        movups   xmm1, xmm0              ; copy unaligned last bytes to xmm1
        movups   xmm0, [rcx + rdx]       ; load deferred-store bytes
        movups   [r9], xmm1              ; now safe to do unaligned store
        mov      r8, rcx                 ; easier to recalc length (r8) using rcx-rax ...
        sub      r8, rax                 ; ... than calc how much to subtract from it

;
; See if we can move any 128-byte blocks.
;
XmmMovLargeTest:
        mov      r9, r8                  ; copy count of bytes remaining
        shr      r9, 7                   ; compute number of 128-byte blocks
        jz       short XmmMovSmallTest   ; if z jump around to 2nd loop
        movaps   [rcx], xmm0             ; going into 1st loop, ok to store deferred bytes
        jmp      short XmmMovLargeInner  ; jump into 1st loop
;
; Move 128-byte blocks
;
        align    16

XmmMovLargeOuter:
        movaps   (128-112)[rcx], xmm0    ; store 7th chunk from prior iteration
        movaps   (128-128)[rcx], xmm1    ; store 8th chunk from prior iteration
XmmMovLargeInner:
        movups   xmm0, (-16)[rcx + rdx]      ; load 1st 16 byte chunk
        movups   xmm1, (-32)[rcx + rdx]      ; load 2nd 16 byte chunk
        sub      rcx, 128                    ; reduce destination address
        movaps   (128-16)[rcx], xmm0         ; store 1st 16 byte chunk
        movaps   (128-32)[rcx], xmm1         ; store 2nd 16 byte chunk
        movups   xmm0, (128-48)[rcx + rdx]   ; load 3rd chunk
        movups   xmm1, (128-64)[rcx + rdx]   ; load 4th chunk
        dec      r9                          ; dec block counter (set cc for jnz)
        movaps   (128-48)[rcx], xmm0         ; store 3rd chunk
        movaps   (128-64)[rcx], xmm1         ; store 4th chunk
        movups   xmm0, (128-80)[rcx + rdx]   ; load 5th chunk
        movups   xmm1, (128-96)[rcx + rdx]   ; load 6th chunk
        movaps   (128-80)[rcx], xmm0         ; store 5th chunk
        movaps   (128-96)[rcx], xmm1         ; store 6th chunk
        movups   xmm0, (128-112)[rcx + rdx]  ; load 7th chunk
        movups   xmm1, (128-128)[rcx + rdx]  ; load 8th chunk
        jnz      short XmmMovLargeOuter      ; loop if more blocks

        movaps   (128-112)[rcx], xmm0    ; store 7th chunk from final iteration
        and      r8, 7Fh                 ; compute remaining byte count
        movaps   xmm0, xmm1              ; 8th chunk becomes deferred bytes
;
; See if we have any 16-byte blocks left to move
;
XmmMovSmallTest:
        mov      r9, r8                  ; copy count of bytes remaining
        shr      r9, 4                   ; compute number of 16-byte blocks
        jz       short XmmMovTrailing    ; if z, no 16-byte blocks

        align    16

XmmMovSmallLoop:
        movups   [rcx], xmm0             ; the first time through this is the
                                         ; store of the deferred bytes from above
        sub      rcx, 16                 ; reduce dest addr
        movups   xmm0, [rcx + rdx]       ; load a block
        dec      r9
        jnz      XmmMovSmallLoop

XmmMovTrailing:
        and      r8, 0Fh                 ; compute remaining byte count
        jz       short XmmMovReturn      ; if z, no residual bytes to move

;
; Handle remainder bytes at the start.
;
        movups   [rax], xmm2             ; store lowest 16 bytes, which includes remainder

XmmMovReturn:
        movups   [rcx], xmm0             ; store deferred bytes
        ret

        LEAF_END memcpy_name, _TEXT$21

        _RDATA   segment read para alias('.rdata$00') 'DATA'

;
;  Code address table for handling small (< 16 bytes) moves
;

MoveSmall       dd        IMAGEREL MoveSmall0
                dd        IMAGEREL MoveSmall1
                dd        IMAGEREL MoveSmall2
                dd        IMAGEREL MoveSmall3
                dd        IMAGEREL MoveSmall4
                dd        IMAGEREL MoveSmall5
                dd        IMAGEREL MoveSmall6
                dd        IMAGEREL MoveSmall7
                dd        IMAGEREL MoveSmall8
                dd        IMAGEREL MoveSmall9
                dd        IMAGEREL MoveSmall10
                dd        IMAGEREL MoveSmall11
                dd        IMAGEREL MoveSmall12
                dd        IMAGEREL MoveSmall13
                dd        IMAGEREL MoveSmall14
                dd        IMAGEREL MoveSmall15
IFDEF _VCRUNTIME_BUILD_QSPECTRE
                dd 0 dup (IMAGEREL MoveSmall0) ; padding
ENDIF

;
;  Code address table for handling small (<= 256 byte) moves using regular AVX stores
;

MoveSmallYmm    dd        IMAGEREL Mov0YmmBlocks
                dd        IMAGEREL Mov1YmmBlocks
                dd        IMAGEREL Mov2YmmBlocks
                dd        IMAGEREL Mov3YmmBlocks
                dd        IMAGEREL Mov4YmmBlocks
                dd        IMAGEREL Mov5YmmBlocks
                dd        IMAGEREL Mov6YmmBlocks
                dd        IMAGEREL Mov7YmmBlocks
                dd        IMAGEREL Mov8YmmBlocks
IFDEF _VCRUNTIME_BUILD_QSPECTRE
                dd 7 dup (IMAGEREL Mov0YmmBlocks) ; padding
ENDIF

;
;  Code address table for handling small (<= 256 byte) moves using non-temporal AVX stores
;

MoveSmallYmmNT  dd        IMAGEREL Mov0YmmBlocksNT
                dd        IMAGEREL Mov1YmmBlocksNT
                dd        IMAGEREL Mov2YmmBlocksNT
                dd        IMAGEREL Mov3YmmBlocksNT
                dd        IMAGEREL Mov4YmmBlocksNT
                dd        IMAGEREL Mov5YmmBlocksNT
                dd        IMAGEREL Mov6YmmBlocksNT
                dd        IMAGEREL Mov7YmmBlocksNT
                dd        IMAGEREL Mov8YmmBlocksNT
IFDEF _VCRUNTIME_BUILD_QSPECTRE
                dd 7 dup (IMAGEREL Mov0YmmBlocks) ; padding
ENDIF

;
;  Code address table for handling small (<=128 byte) moves using regular SSE stores
;

MoveSmallXmm    dd        IMAGEREL Mov0XmmBlocks
                dd        IMAGEREL Mov1XmmBlocks
                dd        IMAGEREL Mov2XmmBlocks
                dd        IMAGEREL Mov3XmmBlocks
                dd        IMAGEREL Mov4XmmBlocks
                dd        IMAGEREL Mov5XmmBlocks
                dd        IMAGEREL Mov6XmmBlocks
                dd        IMAGEREL Mov7XmmBlocks
                dd        IMAGEREL Mov8XmmBlocks
IFDEF _VCRUNTIME_BUILD_QSPECTRE
                dd 7 dup  (IMAGEREL Mov0XmmBlocks) ; padding
ENDIF

        _RDATA  ends

        end

Please don't forget #2628.


Update tissue codes

T77: sample type 77 is Lateral Gastrocnemius (Histology).. that was collected at site 940 so it's PASS 1B
T99: the new code for venacava

New version available https://github.com/MoTrPAC/MotrpacBicQC/releases/tag/v0.8.5


kudusync needs to use LF and mono

Since kudusync is supposed to run on Linux, all line break characters need to be LF instead of CRLF.
Also kudusync.NET.exe cannot be directly executed without mono.

Hi @michimune, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla2.dotnetfoundation.org.

TTYL, DNFBOT;

Added logic to check mono and use it if available.
For the multiple kudusync versions, I found that there was node version of kudusync. But this shell script is explicitly invoking kudusync.NET.exe and I am not changing it. So I don't think my change will affect the behavior.
Anyway I want to test it on Windows but I don't know how. Is there an easy way to test?

This has been superseded by a fix to the Kudu Docker image in appsvc. The script in question is only intended to be called as a shim when a user supplies a custom bash deployment script on Windows. @michimune, please close this PR at your convenience.

Great! I will close this and open a new PR for the InvalidOperationException issue.


Windows blocks me from downloading the invisible dual fix dll file

So I know the solution to solving this, just manually allow it, but I thought I would bring this to light

thats not even my mod??

bro thats my mod why are you telling this to mat

Sorry, I was thinking of the wrong thing, I meant to say the run info. I'm sorry I got that wrong lol


[gpu] clean up cuda url generation

Create a function is_ubuntu22
create a variable "shortname" which is listed in [1] from environment
merged variables NVIDIA_DEBIAN_REPO_URL, NVIDIA_UBUNTU_REPO_URL into NVIDIA_REPO_URL
enabled the container toolkit repository for ubuntu as well as debian (it is still only installed on debian 12)

[1] https://developer.download.nvidia.com/compute/machine-learning/repos/

The changes work fine for Ubuntu 20.04.

/gcbrun

/gcbrun

/gcbrun

oof.  I forgot that it would run the FULL SUITE if I touched that .py ; I'll revert it for now, but would like to add it as an interstitial.
$ git show 8cb3c05ddde17626963ed763c8e6afa31e675272
commit 8cb3c05ddde17626963ed763c8e6afa31e675272
Author: C.J. Collier<EMAIL_ADDRESS>Date:   Mon Jul 22 13:53:56 2024 -0700

    improve io performance with pd-balanced

diff --git a/integration_tests/dataproc_test_case.py b/integration_tests/dataproc_test_case.py
index 31c640d..fd0c2c5 100644
--- a/integration_tests/dataproc_test_case.py
+++ b/integration_tests/dataproc_test_case.py
@@ -159,6 +159,9 @@ class DataprocTestCase(parameterized.TestCase):
         args.append("--master-boot-disk-size={}".format(boot_disk_size))
         args.append("--worker-boot-disk-size={}".format(boot_disk_size))

+        args.append("--master-boot-disk-type pd-balanced")
+        args.append("--worker-boot-disk-type pd-balanced")
+
         args.append("--format=json")

         args.append("--region={}".format(self.REGION))

/gcbrun

I've increased T4 GPUs to 275 to see if that fixes the build failure on 2.0-debian10

/gcbrun

From the test logs:
2024-07-22T21:43:51.919061905Z ERROR: (gcloud.dataproc.clusters.create) INVALID_ARGUMENT: Insufficient 'NVIDIA_T4_GPUS' quota. Requested 3.0, available 0.0. Your resource request exceeds your available quota. See https://cloud.google.com/compute/resource-usage. Use https://cloud.google.com/docs/quotas/view-manage#requesting_higher_quota to request additional quota.
2024-07-22T21:43:51.919069336Z
2024-07-22T21:43:51.919076391Z
2024-07-22T21:43:51.919102442Z ----------------------------------------------------------------------
2024-07-22T21:43:51.919112142Z Ran 2 tests in 1415.394s
2024-07-22T21:43:51.919119734Z
2024-07-22T21:43:51.919127876Z FAILED (failures=1)
2024-07-22T21:43:51.919135966Z ================================================================================
2024-07-22T21:43:52.034644384Z INFO: Found 1 test target...
2024-07-22T21:43:52.127997487Z Target //gpu:test_gpu up-to-date:
2024-07-22T21:43:52.128260095Z   bazel-bin/gpu/test_gpu
2024-07-22T21:43:53.327061241Z INFO: Elapsed time: 2343.920s, Critical Path: 2269.21s
2024-07-22T21:43:53.327189780Z INFO: 21 processes: 38 local.
2024-07-22T21:43:53.408060347Z INFO: Build completed, 1 test FAILED, 21 total actions
2024-07-22T21:43:53.509238567Z //gpu:test_gpu                                                           FAILED in 34 out of 38 in 1433.7s
2024-07-22T21:43:53.509288227Z   Stats over 38 runs: max = 1433.7s, min = 63.2s, avg = 360.4s, dev = 271.2s

/gcbrun

I've increased T4 GPUs quota to 275 to see if that fixes the build failure on 2.0-debian10

Can the quota be bumped to 350?

The changes looks fine and can be merged. Just concerned about the timeout of 2 hours for the presubmits build. I say, we should make it to 4 hours.

Faster is better for me.  Better to resolve the congestion so there is no need for retries.  The actions finish in less than 20m for me, so I expect we can reduce the time to run.

/gcbrun

I've increased T4 GPUs quota to 275 to see if that fixes the build failure on 2.0-debian10

Can the quota be bumped to 350?

Okay, I've increased to 350

/gcbrun

/gcbrun

Discarding changes to gpu/test_gpu.py as they are being picked up in #1192

The error I was receiving was:
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException): Invalid resource request! Cannot allocate containers as requested resource is greater than maximum allowed allocation. Requested resource type=[yarn.io/gpu], Requested resource=<memory:3072, vCores:1, yarn.io/gpu: 1>, maximum allowed allocation=<memory:6144, vCores:2>, please note that maximum allowed allocation is calculated by scheduler based on maximum resource of registered NodeManagers, which might be less than configured maximum allocation=<memory:6144, vCores:32000, yarn.io/gpu:<PHONE_NUMBER>854775807>


Missing code for version 4.10.0 on google-play

The version in google-play is: 4.10.0 Updated: April 22, 2021
https://play.google.com/store/apps/details?id=com.breadwallet
While the latest version found in this repo is <IP_ADDRESS>:
https://github.com/breadwallet/breadwallet-android/blob/39f16c570e3f5afc3678572e9a1d5854ffccb43b/buildSrc/src/main/kotlin/brd/BrdRelease.kt
and latest commit from: Mar 10, 2021:
https://github.com/breadwallet/breadwallet-android/commit/a6b8add794ced98b2ea77c3dcecaadd7a91dfdd7
Please publish the code for latest 4.10.0 version on google-play, and in future ensure that code is published before it's released to google-play.

Hi @emanuelb!
Thanks for your feedback! We really appreciate it.
Sorry that we taken a while to update our public repo to 4.10.0.  We've made some exciting changes to the codebase and we want to be extra careful to make sure the transition to 4.10.0 goes smoothly for our community.  We're working on resolving the last few issues and should be able to update the code by the end of the month.
Thanks for your continued interest and support in our project!

The latest Android and iOS releases can be found at https://github.com/breadwallet/brd-mobile


Runtime scanner config wizard (part 1)

A large chunk of https://github.com/ethyca/fides/issues/1566. The PR was getting big, so I decided to PR this portion first and work on the remaining steps (rendering the results table and saving the systems) in a separate PR.
Code Changes

[x] Adds the kubernetes scanner to redux
[x] Adds upserting systems to redux
[x] Adds the runtime scanner logo and uses it as a button to configure the type of system adding we are doing
[x] Refactor the loading screen into its own component so that both the AWS scanner and runtime system scanner can use it (with the warning modal)
[x] No longer renders the buttons while AWS scanning is taking place
[x] Adds a "form" for kicking off the runtime system scanner. Right now, there are no creds to input, so as soon as the component mounts it kicks off the scan. But in the future, this would be the place to put those creds.
[x] Extends the AuthenticateScanner component to also take runtime scanning (a plus feature, so it doesn't automatically get included in the types ValidTargets since it's a different endpoint)
[x] Makes the ScannerError component a little more generic so that it can be used for runtime scanning too
[x] Adds cypress tests

Something to discuss: where should plus types go in fides? for now, I plopped the one I needed in types/plus, but might be worth talking through.
Steps to Confirm
With the fides core server

[ ] Enable the config wizard flag, then go straight to localhost:3000/config-wizard
[ ] Go through the config wizard flow. There should be no mention of the runtime system scanner

With the fidesctl+ server

[ ] Enable system scanning in fidesctl+ (you'll need pixie creds from Phil, read the README there very carefully)
[ ] make server
[ ] In admin-ui, enable the config wizard flag, then go straight to localhost:3000/config-wizard
[ ] Go through the config wizard flow and choose "Data flow scanner"
[ ] It'll do the scan, and then show an empty table (TODO). but at least the toast will say how many systems were found
[ ] If you don't have fidesctl+ properly set up, you should see a nice error

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation Updated:

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[x] Update CHANGELOG.md

Description Of Changes
https://user-images.githubusercontent.com/24641006/199295500-945adc2b-9f4e-4089-ba40-68b4ffe55020.mov

Actually, I just realized once https://github.com/ethyca/fides/pull/1634 goes in, there's only a tiny bit of work that needs to be done on this PR. So lemme do that tiny work now, and then we'll merge these PR's together and then I think we'll have a full flow 🎉

@LKCSmith this should be ready to review now! It's very closely related to your PR, so I thought you'd be the best person to take a look at it

@LKCSmith this should be ready to review now! It's very closely related to your PR, so I thought you'd be the best person to take a look at it

Sounds good - should have some time to review tonight or tomorrow morning.


Error in alert config example description?

The description here contains an example of the alert parameter CSV file; the description of the 2nd row 20,fan_in,0,4,6,2700,3000,10,30,,True reads:
"All alerts are SAR (is_sar = True) and all involved accounts are not flagged as SAR."
Should this actually be "... and all involved accounts are flagged as SAR."?
Further, the description of the 3rd row reads:
"All alerts are false-alert (is_sar = False) and all involved accounts are also flagged as SAR"
Should this actually be "... and all involved accounts are not flagged as SAR"?

Thank you for pointing that out. You are right.
Now I verified these mistakes.


Updated README.md file

Changes proposed

Added official website links to the tech stack images, rather than image links.
Made changes to contribution steps of the project by adding two more steps which are helpful for beginners. I have added steps no. 7 and 8.

Screenshots

Note to reviewers

Personally, I felt steps no. 7 and 8 should be present.
Open to Suggestions.

Hey @rupali-codes, Made changes as suggested.

Looks great @Shiva-Sai-ssb! :) LGTM!

Thanks..

Looks great! :)

Thanks. Hey @rupali-codes, could you review and merge it!

@rupali-codes, made this time.

@rupali-codes, Thanks. Merge this one too!! #313


ec2-metadata-fetcher: use IMDSv2, fetch public-ipv4 as well

I'd love to have this change make it to the 20.09 NixOS AMIs.
Motivation for this change

Version 2 of the Instance MetaData Service (IMDS) is the new recommended way of fetching instance metadata on AWS: https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/ and means NixOS AMIs can work in environments that are migrating away from permitting IMDSv1.
I have a server in a private config that wants to know its external IPv4 address, otherwise it doesn't work properly. I intend to use a readFile /etc/ec2-metadata/public-ipv4 in the configuration I push as instance userdata, so that I can launch EC2 instances running this server.
Instances can change user data, public IPv4 address &c. over time, so it's correct to repopulate /etc/ec2-metadata on each boot.

Things done

Tested that the changes produce a working image, by:

building the image using nix-build ./nixos/release.nix -A amazonImage --arg supportedSystems '["x86_64-linux"]' in the nixpkgs root;
importing that image using AWS VM import/export: https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html
Booting the image on EC2, and ensuring that it's possible to log in, and metadata files exist.

Couple of things that need to happen:

https://docs.openstack.org/nova/ussuri/user/metadata.html#metadata-ec2-format The openstack module uses the metadata fetcher. We can back up to version 2009-04-04 of IMDS and probably remain compatible
We need to see how openstack reacts to the fetcher trying to get an IMDSv2 token. Hopefully it just ignores the PUT. I'll need someone who has access to an openstack setup to help me test.

https://docs.openstack.org/nova/ussuri/user/metadata.html#metadata-ec2-format note for my reference

Okay, this is ready now. I have tested the images by building amazon-image.nix both with and without the useImdsToken parameter, and importing the resulting images using AWS VM Import/Export to use a custom AMI.
Haven't done any OpenStack testing, but I reworked the metadata fetcher to use an IMDS API version that's documented as compatible with OpenStack compute. (The original version in this file — 1.0 — didn't have the public-ipv4 option.)
@copumpkin FYI since I've seen your name on a bunch of cloud stuff in this part of nixpkgs.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-in-distress/3604/34

@garbas I know you had an interest in supporting ec2 instances

I have found it completely impossible to test the openstack side of this: I can't find a provider that will give me openstack access at an affordable price, asking in #nixos or the PR-in-distress thread never found someone who had the resources to help, and the openstack "devstack" script never gave me a working stack to test with. On this front, I really feel that I've done my due diligence, and that nobody seems to be using this feature anyway.
I have done the next best thing I could think of: I built EC2 images with useImdsToken = false to generate the IMDS fetcher script as it will run when baked into an openstack image, and made sure that the metadata fetcher script continues to work. The IMDS version the script uses is explicitly documented as compatible in the openstack docs.
I am curious to see what will happen if this script runs on an EC2 instance with no IPv4 address (i.e., isolated VPC), but my AWS-fu is not good enough to set that up yet.

@jonringer I'm interested in automated the upload of the images :) https://github.com/NixOS/nixos-homepage/issues/447

Okay, I have learned enough about VPCs to do the test I wanted. I built a nixos AMI with the changes in this PR, booted that AMI into a private subnet. The fetch of http://<IP_ADDRESS>/meta-data/public-ipv4 404s, and doesn't create /etc/ec2-metadata/public-ipv4. Which seems fine.
Other things from the metadata fetcher work (e.g., I can SSH in with the keypair I tell AWS to use).
Given that the openstack side of things is impossible to test (see above), I'm now calling this ready-to-merge. What else do I need to do?

@AmineChikhaoui do you mind taking a look at this?

Closing as this was resolved by #104193.


Initialization of container $containerName failed

PLEASE DO NOT INCLUDE ANY PASSWORDS OR TOKENS IN YOUR ISSUE!!!
Describe the issue
Hi, Any ideas from the following ?
At C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\3.0.12\ContainerHandling\Wait-NavContainerReady.ps1:42
char:17
+ ...             throw "Initialization of container $containerName failed" ...

Occurs for both master and NextMajor.
Occurs for both multitenant true and false
Occurs for Dev License and Cronus license (default)
Before and after Update-Module bccontainerhelper
Last master I got was was 21.0.43576-21.0.43463 on 2022-08-10
Works for BCArtifactUrl: https://bcartifacts.azureedge.net/sandbox/20.4.44313.45693/gb
Container appears to continue running, but docker logs shows nothing more.
PS C:\tvt> docker ps -a
CONTAINER ID   IMAGE                                               COMMAND                  CREATED         STATUS                   PORTS                                                                                NAMES
42265de9d658   mcr.microsoft.com/businesscentral:10.0.14393.4104   "powershell -Command…"   5 minutes ago   Up 5 minutes (healthy)   <IP_ADDRESS>:80->80/tcp, <IP_ADDRESS>:443->443/tcp, 1433/tcp, 7083/tcp, <IP_ADDRESS>:7045-7049->7045-7049/tcp, 8080/tcp   bcserver
PS C:\tvt>

With dumpEventLog turned on I only get extra repeated:
TimeGenerated : 08/31/2022 18:07:51
EventSource: MicrosoftDynamicsNavServer$BC
EntryType : Warning
Message :
Server instance: BC
Category: Metadata
ClientSessionId: 00000000-0000-0000-0000-000000000000
ClientActivityId: ad27f896-af56-46cc-9d66-eb1a8d67ed8a
ServerSessionUniqueId: 00000000-0000-0000-0000-000000000000
ServerActivityId: a9d9e022-90a3-4017-bb34-c0173bb624ee
EventTime: 08/31/2022 17:07:51
Message The object name 'VAT Group Authentication Type ' can only appear once for the type 'Enum'. The same object exist
s in both extension ('c50a4bf0-db51-4ad2-88d5-fe2287da0eb8' 'VAT Group Management', Publisher: Microsoft, Package ID: 17
7203f4-79b5-42d0-a26e-5eebdf602765, Runtime Package ID: a11c45c3-c3c1-4390-a604-bb52ce64ec93, Scope: Global, Version: 21
.0.45762.0) and in extension ('c50a4bf0-db51-4ad2-88d5-fe2287da0eb8' 'VAT Group Management', Publisher: Microsoft, Packa
ge ID: 177203f4-79b5-42d0-a26e-5eebdf602765, Runtime Package ID: a11c45c3-c3c1-4390-a604-bb52ce64ec93, Scope: Global, Ve
rsion: 21.0.45762.0).
ProcessId: 948
Tag: 0000ES3
ThreadId: 11
CounterInformation:
CustomParameters: {
}
GatewayCorrelationId:

Scripts used to create container and cause the issue
Write-Host "Creating" $container "from" ($navurl -replace "\?.*", "?stuff=[REDACTED]")

New-BcContainer `
          -accept_eula `
          -artifactUrl $navurl `
          -auth NavUserPassword `
          -containerName $container `
          -multitenant:$true `
          -useBestContainerOS `
		  -updateHosts `
          -Credential $creds `
          -AdditionalParameters @(
            "-v c:\temp:c:\temp", "-v c:\tvt:c:\tvt",
            "--publish 80:80",
            "--publish 443:443",
            "--publish 7045-7049:7045-7049"
            ) `

#         -licenseFile 'C:\tvt\tvtfin.flf' `

Full output of scripts
PS C:\tvt> .\new-bcserver.ps1 master
Fetching artifact name
URL https://bcinsider.azureedge.net/sandbox/21.0.45762.0/gb?stuff=[REDACTED]
Set user as TVision
Creating bcserver from https://bcinsider.azureedge.net/sandbox/21.0.45762.0/gb?stuff=[REDACTED]
BcContainerHelper is version 3.0.12
BcContainerHelper is running as administrator
Hyper-V is Enabled
UsePsSession is True
Host is Microsoft Windows Server 2016 Standard - ltsc2016
Docker Client Version is 20.10.6
Docker Server Version is 20.10.6
Removing Session bcserver
Removing container bcserver
Removing entries from hosts
Removing bcserver from container hosts file
Removing bcserver-* from container hosts file
Removing Desktop shortcuts
Removing C:\ProgramData\BcContainerHelper\Extensions\bcserver
Fetching all docker images
Fetching all docker volumes
Using image mcr.microsoft.com/businesscentral:10.0.14393.4104
Creating Container bcserver
Style: sandbox
Multitenant: Yes
Version: 21.0.45762.0
Platform: 21.0.45724.0
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.14393.4104 (ltsc2016)
Host OS Version: 10.0.14393.4104 (ltsc2016)
Using process isolation
Using locale en-GB
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Additional Parameters:
-v c:\temp:c:\temp
-v c:\tvt:c:\tvt
--publish 80:80
--publish 443:443
--publish 7045-7049:7045-7049
Files in C:\ProgramData\BcContainerHelper\Extensions\bcserver\my:
- AdditionalOutput.ps1
- MainLoop.ps1
- SetupVariables.ps1
- updatehosts.ps1
Creating container bcserver from image mcr.microsoft.com/businesscentral:10.0.14393.4104
47e6aa700bfc897042d452b52e0453bbb2c17706b6928b0c5fd46ef1185edb1f
Waiting for container bcserver to be ready
Using artifactUrl https://bcinsider.azureedge.net/sandbox/21.0.45762.0/gb
Using installer from C:\Run\150-new
Installing Business Central
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
c:\dl\sandbox\21.0.45762.0\platform\ServiceTier\Program Files
c:\dl\sandbox\21.0.45762.0\platform\ServiceTier\System64Folder
Copying PowerShell Scripts
c:\dl\sandbox\21.0.45762.0\platform\WindowsPowerShellScripts\Cloud\NAVAdministration
c:\dl\sandbox\21.0.45762.0\platform\WindowsPowerShellScripts\WebSearch
Copying dependencies
Copying ReportBuilder
Importing PowerShell Modules
Determining Database Collation from c:\dl\sandbox\21.0.45762.0\gb\BusinessCentral-GB.bak
Restoring CRONUS Demo Database
Setting CompatibilityLevel for tenant on localhost\SQLEXPRESS
Exporting Application to CRONUS
Removing Application from tenant
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Copying Web Client Files
c:\dl\sandbox\21.0.45762.0\platform\WebClient\Microsoft Dynamics NAV
Copying ModernDev Files
c:\dl\sandbox\21.0.45762.0\platform
c:\dl\sandbox\21.0.45762.0\platform\ModernDev\program files\Microsoft Dynamics NAV
Copying additional files
Copying ConfigurationPackages
C:\dl\sandbox\21.0.45762.0\gb\ConfigurationPackages
Copying Test Assemblies
C:\dl\sandbox\21.0.45762.0\platform\Test Assemblies
Copying Extensions
C:\dl\sandbox\21.0.45762.0\gb\Extensions
Copying Applications
C:\dl\sandbox\21.0.45762.0\platform\Applications
Copying Applications.GB
C:\dl\sandbox\21.0.45762.0\gb\Applications.GB
Starting Business Central Service Tier
Importing license file
Copying Database on localhost\SQLEXPRESS from tenant to default
Taking database tenant offline
Copying database files
Attaching files as new Database default
Putting database tenant back online
Mounting tenant database
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = False
Sync'ing Tenant
Tenant is Operational
Stopping Business Central Service Tier
Installation took 249 seconds
Installation complete
Initializing...
Setting host.docker.internal to -.-.-.140 in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to -.-.-.140 in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is bcserver
PublicDnsName is bcserver
Using NavUserPassword Authentication
Creating Self Signed Certificate
Self Signed Certificate Thumbprint 7553027BF3C856888F258E8D414A1B37DDF90ADA
Modifying Service Tier Config File with Instance Specific Settings
Starting Service Tier
Failed to start service 'Dynamics 365 Business Central Server [BC] (MicrosoftDynamicsNavServer$BC)'.
at <ScriptBlock>, C:\Run\navstart.ps1: line 156
at <ScriptBlock>, C:\Run\start.ps1: line 363
at <ScriptBlock>, <No file>: line 1Error
Using artifactUrl https://bcinsider.azureedge.net/sandbox/21.0.45762.0/gb
Using installer from C:\Run\150-new
Installing Business Central
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
c:\dl\sandbox\21.0.45762.0\platform\ServiceTier\Program Files
c:\dl\sandbox\21.0.45762.0\platform\ServiceTier\System64Folder
Copying PowerShell Scripts
c:\dl\sandbox\21.0.45762.0\platform\WindowsPowerShellScripts\Cloud\NAVAdministration
c:\dl\sandbox\21.0.45762.0\platform\WindowsPowerShellScripts\WebSearch
Copying dependencies
Copying ReportBuilder
Importing PowerShell Modules
Determining Database Collation from c:\dl\sandbox\21.0.45762.0\gb\BusinessCentral-GB.bak
Restoring CRONUS Demo Database
Setting CompatibilityLevel for tenant on localhost\SQLEXPRESS
Exporting Application to CRONUS
Removing Application from tenant
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Copying Web Client Files
c:\dl\sandbox\21.0.45762.0\platform\WebClient\Microsoft Dynamics NAV
Copying ModernDev Files
c:\dl\sandbox\21.0.45762.0\platform
c:\dl\sandbox\21.0.45762.0\platform\ModernDev\program files\Microsoft Dynamics NAV
Copying additional files
Copying ConfigurationPackages
C:\dl\sandbox\21.0.45762.0\gb\ConfigurationPackages
Copying Test Assemblies
C:\dl\sandbox\21.0.45762.0\platform\Test Assemblies
Copying Extensions
C:\dl\sandbox\21.0.45762.0\gb\Extensions
Copying Applications
C:\dl\sandbox\21.0.45762.0\platform\Applications
Copying Applications.GB
C:\dl\sandbox\21.0.45762.0\gb\Applications.GB
Starting Business Central Service Tier
Importing license file
Copying Database on localhost\SQLEXPRESS from tenant to default
Taking database tenant offline
Copying database files
Attaching files as new Database default
Putting database tenant back online
Mounting tenant database
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = False
Sync'ing Tenant
Tenant is Operational
Stopping Business Central Service Tier
Installation took 249 seconds
Installation complete
Initializing...
Setting host.docker.internal to -.-.-.140 in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to -.-.-.140 in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is bcserver
PublicDnsName is bcserver
Using NavUserPassword Authentication
Creating Self Signed Certificate
Self Signed Certificate Thumbprint 7553027BF3C856888F258E8D414A1B37DDF90ADA
Modifying Service Tier Config File with Instance Specific Settings
Starting Service Tier
Failed to start service 'Dynamics 365 Business Central Server [BC] (MicrosoftDynamicsNavServer$BC)'.
at <ScriptBlock>, C:\Run\navstart.ps1: line 156
at <ScriptBlock>, C:\Run\start.ps1: line 363
at <ScriptBlock>, <No file>: line 1
New-BcContainer Telemetry Correlation Id: 1a9bf86a-24ee-47d6-9527-a05a01c26fb2
Initialization of container bcserver failed
At C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\3.0.12\ContainerHandling\Wait-NavContainerReady.ps1:42
char:17
+ ...             throw "Initialization of container $containerName failed" ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Initialization ...bcserver failed:String) [], RuntimeException
    + FullyQualifiedErrorId : Initialization of container bcserver failed

PS C:\tvt>
...

Screenshots
If applicable, add screenshots to help explain your problem.
Additional context

does it happen all the time? --> Yes
did it use to work? --> Yes

please add -alwayspull and retry

Yup looks like they replaced the existing image 13 days ago.
Doing a docker-pull of the windows image allowed it to complete successfully (both single and multi-tenant).
I'll add it to my checklist, thanks.

I will add to the next containerhelper that if you have an old generic (pre <IP_ADDRESS>) - I will pull - as this is needed for 21.x

Shipped in 4.0.3


[rbac] group-list: filter "Group name" by name__icontains, not exact name

Issue: AAH-1806
Filtering by group name used an exact match .. changing to name__icontains for case insensitive partial match
Before:

After:

make sure the "Group name" is consistently used in the filter name and the column name

Ah, api doesn't currently support name__icontains in groups, using name__contains for now.


Left Click to Withdraw X

Simple suggestion, if possible: Enable left clicking to withdraw a custom amount. Would be helpful for bankstanding activities like Battlestaves, Wines, Herblore, etc.  Hopefully this would be in-line with Jagex rules?

Duplicate of #1647


Upgrade dependency-analysis plugin to 1.31.0

@bot-gradle test this

I've triggered the following builds for you. Click here to see all build failures.

PullRequestFeedback build

@bot-gradle test without pts

I've triggered the following builds with parameters: -DenablePredictiveTestSelection=false for you. Click here to see all build failures.

PullRequestFeedback build


unable to run it through npx

If I run npx fauna-schema-migrate init it just hangs and loads indefinitely:
npx fauna-schema-migrate init
fetchMetadata: sill resolveWithNewModule<EMAIL_ADDRESS>checking installable status

Installing it with yarn and running it, works as expected. It affects all versions published so far.

Hey @botond-veress, what environment are you running on?
This seems like a problem installing the library and npm hanging to retrieve the version?
I tried it out a few times and it does seem to work here locally.

Hey @fauna-brecht, OSX Catalina 10.15.7.
% node -v
v12.19.1
% npm -v
6.14.8
% npx -v
6.14.8

I don't have issues running any other package with npx. So weird.

Strange indeed, very similar setup here. Can't really do anything though without reproducing it.

It's hanging pretty reliably on Github Actions in my repo

Probably not.
"  ERROR Raw mode is not supported on the current process.stdin, which Ink uses
as input stream by default.
Read about how to prevent this error on
https://github.com/vadimdemedes/ink/#israwmodesupported
"
Try with the --legacy option if you run it in your CI.

Try with the --legacy option if you run it in your CI.

Yup that did it. Sorry for polluting the issue 😓

I'll close it for now since I don't know whether it still happens and can't reproduce it.


Cannot add package to Xamarin.Forms project

Hi Christian,
First, I want to thank you for posting this project. I have been using it for a few months on an IoT project and it works like a champ! However....
When I try to add the package to a Xamarin.Forms project I'm working on, I get the following error:
Installing MQTTnet-CP 2.7.5.
Completed installation of MQTTnet-CP 2.7.5
For adding package 'MQTTnet-CP.2.7.5' to project 'Masterflex' that targets 'portable45-net45+win8+wpa81'.
Install failed. Rolling back...
Package 'MQTTnet-CP.2.7.5' does not exist in project 'Masterflex'
Package 'MQTTnet-CP.2.7.5' does not exist in folder '/Users/admin/Desktop/XamarinProjects/MasterflexLive-Xamarin/packages'
Executing nuget actions took 727.25 ms
Could not install package 'MQTTnet-CP 2.7.5'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
I'm not familiar with building PCLs, but I guess I can look into compiling the project for the profile I use. If you have any advice, I'd greatly appreciate it!

Tried building the PCL for this but the System.Net.Security and System.Net.Websockets both have dependencies on that are not supported under the .NET Portable subset. Looks like I'll have to find another library to use for my mobile app.

Hi,
the package MQTTnet-CP is no official package. It is a fork of this project. PCLs are not supported by this project because netstandard 2.0 is already supported by Xamarin.
Best regards
Christian

Get the same error trying to use v 2.7.5
Attempting to gather dependency information for package 'MQTTnet.2.7.5' with respect to project 'Masterflex', targeting '.NETPortable,Version=v4.5,Profile=Profile111'
GET https://api.nuget.org/v3/registration3-gz-semver2/mqttnet/index.json
OK https://api.nuget.org/v3/registration3-gz-semver2/mqttnet/index.json 75ms
Total number of results gathered : 61
Gathering dependency information took 81.66 ms
Summary of time taken to gather dependencies per source :
https://api.nuget.org/v3/index.json	-	80.84 ms
Attempting to resolve dependencies for package 'MQTTnet.2.7.5' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'MQTTnet.2.7.5'
Resolved actions to install package 'MQTTnet.2.7.5'
Retrieving package 'MQTTnet 2.7.5' from 'nuget.org'.
For adding package 'MQTTnet.2.7.5' to project 'Masterflex' that targets 'portable45-net45+win8+wpa81'.
Install failed. Rolling back...
Package 'MQTTnet.2.7.5' does not exist in project 'Masterflex'
Package 'MQTTnet.2.7.5' does not exist in folder '/Users/admin/Desktop/XamarinProjects/MasterflexLive-Xamarin/packages'
Executing nuget actions took 33.92 ms
Could not install package 'MQTTnet 2.7.5'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Just trying to figure out what I'm doing wrong.

Hi Christian,
My Xamarin.Forms project  targets .NET Portable 4.5 Profile 111, which is compatible with .NET Standard 1.1. Do you know if it is possible to build MQTT for .net standard 1.1 and use that library with a project targeting Profile 111? I'd move everything to .net standard 2 but there are some XF controls I use that aren't there yet.

Never mind. A little more digging produced an answer to my question and it is no. You use .net standard 1.3 because that is the lowest version of the standard that supports websockets. I'll have to try something else for this one.

Hi sorry but 1.3 is the min version required. But maybe you can introduce a new .netstandard 2.0 lib which references MQTTnet AND the existing portable classes as well?
Best regards
Christian


[Windows] Unable to build

➜ GOOS=windows go build -ldflags "-H=windowsgui" .
# github.com/SkYNewZ/twitch-clip
./main.go:69:105: app.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
./main.go:92:13: app.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
./main.go:95:17: app.Disable undefined (type *autostart.App has no field or method Disable)
./main.go:103:17: app.Enable undefined (type *autostart.App has no field or method Enable)

➜ GOOS=linux go build .   # Another error
# github.com/getlantern/systray
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:78:2: undefined: nativeLoop
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:106:2: undefined: registerSystray
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:111:14: undefined: quit
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:136:2: undefined: addSeparator
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:190:2: undefined: hideMenuItem
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:195:2: undefined: showMenuItem
../../../../pkg/mod/github.com/getlantern/systray@v1.1.0/systray.go:220:2: undefined: addOrUpdateMenuItem

When building for Windows, I get this error. My program is building/running successfully on macOS.

Hello how did you manage to fix this issue?

I've enabled CGO for build for project using CGO_ENABLED=1 go build ...


opentofu: 1.6.0-alpha3 -> 1.6.0-alpha4

Diff: https://github.com/opentofu/opentofu/compare/v1.6.0-alpha3...v1.6.0-alpha4
Changelog: https://github.com/opentofu/opentofu/blob/v1.6.0-alpha4/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 266768 run on x86_64-linux 1

1 package built:

opentofu