WhereIsAI/github-issue-similarity huggingface dataset:
Issue 1:
Recently, functional.softmax has been changed to accept dim as argument.

When run on CPU, I can specify arbitrary value for dim, whether input is 2D or 3D.

For example, the following code works without any problem:

In [23]: functional.softmax(Variable(torch.ones(3, 4)), dim=0)
Out[23]:
Variable containing:
0.3333 0.3333 0.3333 0.3333
0.3333 0.3333 0.3333 0.3333
0.3333 0.3333 0.3333 0.3333
[torch.FloatTensor of size 3x4]

In [24]: functional.softmax(Variable(torch.ones(3, 4, 5)), dim=1)
Out[24]:
Variable containing:
(0 ,.,.) =
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500

(1 ,.,.) =
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500

(2 ,.,.) =
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2500 0.2500 0.2500
[torch.FloatTensor of size 3x4x5]

However, when the computation is performed in GPU, the flexibility decreases.

In [25]: functional.softmax(Variable(torch.ones(3, 4)).cuda(), dim=0)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-25-d95ff8a04b77> in <module>()
----> 1 functional.softmax(Variable(torch.ones(3, 4)).cuda(), dim=0)

~/anaconda3/envs/ml/lib/python3.6/site-packages/torch/nn/functional.py in softmax(input, dim, _stacklevel)
648 if dim is None:
649 dim = _get_softmax_dim('softmax', input.dim(), _stacklevel)
--> 650 return _Softmax(dim)(input)
651
652

RuntimeError: invalid argument 4: dim has to be 1 for 2D input at /home/jhchoi/workspace/pytorch/torch/lib/THCUNN/generic/SoftMax.cu:32

In [26]: functional.softmax(Variable(torch.ones(3, 4, 5)).cuda(), dim=1)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-26-672d6d5d3b8d> in <module>()
----> 1 functional.softmax(Variable(torch.ones(3, 4, 5)).cuda(), dim=1)

~/anaconda3/envs/ml/lib/python3.6/site-packages/torch/nn/functional.py in softmax(input, dim, _stacklevel)
648 if dim is None:
649 dim = _get_softmax_dim('softmax', input.dim(), _stacklevel)
--> 650 return _Softmax(dim)(input)
651
652

RuntimeError: invalid argument 4: dim has to be 0 for 3D input at /home/jhchoi/workspace/pytorch/torch/lib/THCUNN/generic/SoftMax.cu:42

Is it intended behavior? If it is, then I think it should be specified in the document.

Issue 2:
(removed previous report addressed by #3245)

There's a missing letter 'f' in the docs, my browser doesn't render the equation:

:math:`softmax(x) =

rac{exp(-x_i)}{sum_j exp(-x_j)}`
Issue 1:
I'm creating API on server.js that uses user authentication via passport.

I already add code to use passport and it works fine. If the user is not authorized, then redirect to login page for page, or return 403 Forbedden for APIs.

const isAuthenticatedAPI = (req, res, next) => {
if (req.isAuthenticated()) {
return next();
} else {
res.sendStatus(403);
}
};

server.get("/api/item/:id", isAuthenticatedAPI, (req, res) => {
// API implementation
});

But it is too strong. The code reject API calls during SSR. I hope to omit authentication check during SSR. I thought two solutions, but they were fragile:

Checking user-agent is node-fetch/1.0 (+https://github.com/bitinn/node-fetch) or not.

Checking req.ip is local or not (via is-local-ip)

Is there any cool solution to identify the API client is for SSR or CSR?

thanks,

I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

We will get any good solution to decide authentication check should be omitted or not.

Current Behavior

I couldn't identify API call is for SSR/CSR in Express.js's handler.

Steps to Reproduce (for bugs)

Add passport to next's server.js

Call the API during SSR (it's ok on CSR)

Context

I am creating the website that has uses user authentication via passport.

Your Environment

Tech
Version

next
5.0

node
8.9.4

OS
macOS 10.12.6

browser
Chrome M63

etc

Issue 2:
I have see the example with-external-scoped-css , but it compile the scss or sass to static , then import in html head ? so all page css will be imported ! and the static asset dont add hash with name ? how to force the cdn update ?

I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

Current Behavior

Steps to Reproduce (for bugs)

Context

Your Environment

Tech
Version

next

node

OS

browser

etc
Issue 1:
When scrolling to the bottom of the page, affix-Plugin sets the class "affix-bottom" and sets inline styles like "position: relative; top: XYZpx;". The Problem is, that the inline "position: relative" aren't removed after scrolling up again. It would be better, to set "position: relative" via the class "affix-bottom" (which works correct) and not via javascript. That would solve the problem.

BTW: I use Mac OS 10.9.3, Chrome 35.0.1916.114

Issue 2:
The following issue is reproducible with the current bootstrap docs website (e.g. http://getbootstrap.com/javascript/) using Firefox 28 and Chrome 33, on Windows:

Start with a large browser window.

Load http://getbootstrap.com/javascript/

Decrease width of the window, so that the sidebar disappears, i.e. the affix contents menu goes to the bottom of the page (you don't see it anymore).

Scroll all the way down to the footer, you see the affix contents menu again.

Increase the window width again. At some point, the affix contents menu goes to the top again (you don't see it anymore).

Scroll all the way up, there it is.

Scroll down, the affix does not follow scroll movement anymore.
Issue 1:
Is there an ability to query for a selector that has extraneous space around it? I'm left to "test" some legacy Angular.js apps, which are notorious for this.

my await page.waitForSelector('"What does your Ford Focus need?"') is never resolving, and upon DEBUG mode it never resolves.

other elements I query do however work, so it could either be the dodgy space in there—or the fact that part of the "text" is nested in a span?

Issue 2:
Context:

Playwright Version: 0.16.0

Operating System: Mac

Node version: v13.11.0

Browser: All

Code Snippet

const { chromium } = require('playwright');

(async () => {
const browser = await chromium.launch()
const context = await browser.newContext()
const page = await context.newPage()

await page.setContent(`
<div class="wrapper">
<div>
<span>Should</span>
</div>
<div>
<span>match</span>
</div>
</div>`)

const elementByClass = await page.$('.wrapper')
const innerText = await elementByClass.innerText()
console.log('Inner Text matches regex:', /Should.*match/is.test(innerText))

const elementByText = await page.$('text=/Should.*match/is')
console.log('element not found:', elementByText === null)

await browser.close()
})()

Output

Inner Text matches regex: true
element not found: true

Describe the bug

Since regex matches innerText of .wrapper element I expect it to be matched by selector.
Issue 1:
I have a freshly-built numpy on OS X 10.9, and am running into pretty regular crashes related to umath.so. Here is a Gist with the crash report. It seems to crash in a variety of ways, but I can reliably get it to crash by importing a module like Theano, which has numpy as a dependency. I have re-built all of my packages since upgrading to OSX 10.9.

Issue 2:
Describe the issue:

I have replaced the last 3 lines in this code

A = np.ones((150000,3,3))
j = np.ones((150000))
s = np.ones((150000))
jDuplicated = np.repeat(j, 3**2).reshape((len(elements), dim, dim))
sDuplicated = np.repeat(s, 3**2).reshape((len(elements), dim, dim))
res= sDuplicated * A @ np.swapaxes(A,1,2) * jDuplicated

with

res = np.einsum('i,i,ijk,ilk->ijl',s,j,A,A)

The single line looks much better than duplicating a lot of data so that I can perform element-wise multiplication. However the top version is around 10% faster on my pc.

I would expect einsum to be faster, since it does not replicate a lot of data. Does anybody have an idea why this is not the case? Maybe the repeated data causes less cache misses?

Reproduce the code example:

import numpy as np

A = np.ones((150000,3,3))
j = np.ones((150000))
s = np.ones((150000))
# the numbers might need to be random to avoid simplification
res = np.einsum('i,i,ijk,ilk->ijl',s,j,A,A)

Error message:

No response

NumPy/Python version information:

1.22.1 3.10.2 (main, Jan 15 2022, 18:03:19) [GCC 7.5.0]
Issue 1:
The go 1.6 compiler panics on this 2.25 Mbyte source file containing a slice with 13240 elements: https://drive.google.com/file/d/0B2AF520HhpuzdzZhSVpPZGZkTUU/view

go1.6 linux/amd64

GOARCH="amd64"

GOOS="linux"

$ go build buildme.go
# command-line-arguments
panic: runtime error: makeslice: len out of range

goroutine 1 [running]:
panic(0x804f60, 0xc86085dd70)
/usr/lib/google-golang/src/runtime/panic.go:483 +0x3ef
cmd/compile/internal/gc.newliveness(0xc82018b9e0, 0xc8200a0000, 0xc865c44000, 0x2d416, 0x2e400, 0xc866950000, 0xcee1, 0xf000, 0xc9cda4b11aac74db)
/usr/lib/google-golang/src/cmd/compile/internal/gc/plive.go:687 +0x161
cmd/compile/internal/gc.liveness(0xc82018b9e0, 0xc8200a0000, 0xc848dee900, 0xc848dee980)
/usr/lib/google-golang/src/cmd/compile/internal/gc/plive.go:1782 +0x2cf
cmd/compile/internal/gc.compile(0xc82018b9e0)
/usr/lib/google-golang/src/cmd/compile/internal/gc/pgen.go:541 +0xdf2
cmd/compile/internal/gc.funccompile(0xc82018b9e0)
/usr/lib/google-golang/src/cmd/compile/internal/gc/dcl.go:1450 +0x1c0
cmd/compile/internal/gc.Main()
/usr/lib/google-golang/src/cmd/compile/internal/gc/lex.go:472 +0x2116
cmd/compile/internal/amd64.Main()
/usr/lib/google-golang/src/cmd/compile/internal/amd64/galign.go:127 +0x58d
main.main()
/usr/lib/google-golang/src/cmd/compile/main.go:32 +0x395

Issue 2:
We have a lot of packages in the std that uses specialized instructions

that are not always present. Most of the times, the package will detect

the required features by themselves. This is fine but will lead to code

duplication. And as Bryan Chan mentioned on https://golang.org/cl/22201,

even if the processor provides way to detect certain optional features,

it's still better to use AT_HWCAP from Linux auxv because that also

takes kernel support into account.

Only the runtime can access auxv, so it makes sense for the runtime

to query the processor capabilities and provide that to the packages.

I propose that we add an internal package internal/cpu that exposes

capability flags for the current processor so that each std packages

could query it directly instead of having a runtime detection routine

that duplicates the work.

Another benefit is that, some processors, like ARM, doesn't provide

a way to do runtime capability detection, so we have to rely on the

kernel to provide this information. Different kernels provide different

mechanisms for this (sysctl for BSD and auxv for linux), so providing

a package that abstracts those OS-dependent feature away is also

beneficial.

We might promote the package to runtime/cpu if deemed fit, but that's

out of the scope for this proposal.

The package could be modeled after the Linux's AT_HWCAP bits,

and it will be processor dependent.
Issue 1:
Steps to Reproduce

When the keyboard appears, the bottomNavigationBar in the Scaffold not stay at the bottom and a keyboard height is added to it.

Flutter Doctor

[✓] Flutter (on Mac OS X 10.13.3 17D47, locale zh-Hans-CN, channel alpha)

• Flutter at /Users/tsangpo/workspace/sdk/flutter

• Framework revision 8f65fec (7 weeks ago), 2017-12-12 09:50:14 -0800

• Engine revision edaecdc

• Tools Dart version 1.25.0-dev.11.0

• Engine Dart version 2.0.0-edge.d8ae797298c3a6cf8dc9f4558707bd2672224d3e

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.0)

• Android SDK at /Users/tsangpo/workspace/sdk/android-sdk

• Android NDK at /Users/tsangpo/workspace/sdk/android-sdk/ndk-bundle

• Platform android-27, build-tools 27.0.0

• ANDROID_HOME = /Users/tsangpo/workspace/sdk/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-915-b08)

[-] iOS toolchain - develop for iOS devices (Xcode 9.2)

• Xcode at /Applications/Xcode.app/Contents/Developer

• Xcode 9.2, Build version 9C40b

✗ libimobiledevice and ideviceinstaller are not installed. To install, run:

brew install --HEAD libimobiledevice

brew install ideviceinstaller

✗ ios-deploy not installed. To install:

brew install ios-deploy

• CocoaPods version 1.4.0

[✓] Android Studio (version 3.0)

• Android Studio at /Applications/Android Studio.app/Contents

• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)

[✓] IntelliJ IDEA Community Edition (version 2017.3.3)

• Flutter plugin version 21.0.3

• Dart plugin version 173.4301.22

[-] Connected devices

• None

Issue 2:
Steps to Reproduce

Tap the TextField

You'll notice the entire page is pushed up when the soft keyboard shows up

Gist: https://gist.github.com/silverAndroid/eb40f5faaa2d8a0296baf2f9c337ec2b

Logs

No exception.

Flutter Doctor

[√] Flutter (on Microsoft Windows [Version 10.0.15063], locale en-US, channel master)
• Flutter at D:\dev\SDKs\flutter
• Framework revision 51ab5f36c6 (14 hours ago), 2017-12-08 20:39:56 -0800
• Engine revision edb0201fa2
• Tools Dart version 1.25.0-dev.11.0
• Engine Dart version 2.0.0-edge.a38ac7cf127f4611c873c2f2d523c06ce06b1342

[√] Android toolchain - develop for Android devices (Android SDK 26.0.2)
• Android SDK at D:\dev\SDKs\android-sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-26, build-tools 26.0.2
• ANDROID_HOME = D:\dev\SDKs\android-sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] Android Studio (version 3.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] IntelliJ IDEA Ultimate Edition (version 2017.3)
• Flutter plugin version 20.0.3
• Dart plugin version 173.3727.108

[√] Connected devices
• LG H915 • LGH9157e1e3243 • android-arm • Android 7.0 (API 24)
Issue 1:
Hello, I have this example: https://jsfiddle.net/rjurado/tq136Lwr/

<textarea id="textarea" v-pre>
{{works}}
</textarea>

<div id="example">
<p v-pre>{{ work }}</p>
<textarea v-pre>{{ no wokrs }}</textarea>
</div>

new Vue({ el: '#textarea' });
new Vue({ el: '#example' });

Why second textarea show empty?

If you inspect it you can see this:

<textarea :value="no wokrs">{{ no wokrs }}</textarea>

Issue 2:
Vue.js version

1.0.26

Reproduction Link

https://jsfiddle.net/simplesmiler/Lrk9sxjf/102/

What is Expected?

Both textareas having text inside them.

What is actually happening?

First textarea has text. Second textarea is empty, and has literal attribute :value.
Issue 1:
I'm submitting a ... (check one with "x")

[x] bug report
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

when body is null, body.text will go wrong

https://github.com/angular/angular/blob/master/modules/%40angular/http/src/body.ts#L43

Expected/desired behavior

add method to deal with null body

Angular version: 2.0.0-rc.5

Issue 2:
I'm submitting a ... (check one with "x")

[x] bug report
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

Creating a Component with an @ViewChild property off of a base class that has @Input properties does not transpile with an error message of "Can't bind to 'myproperty' since it isn't a known native property"

Expected/desired behavior

Transpilation works

Reproduction of the problem

http://plnkr.co/edit/eJjxhg0pucM6w8PyENzj?p=preview

Note the comment in the "app/child-component.ts" file which, when uncommented, will reveal the issue.

Please tell us about your environment:

Angular version: 2.0.0-rc.4

Browser: Chrome 51.0

Language: TypeScript 1.9.0
Issue 1:
I have searched the issues of this repository and believe that this is not a duplicate.

I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.6.2

Operating System version: win7

Java version: 1.8

Step to reproduce this issue

在本机启动了一个provider, accepts参数设置的为1：

java -Ddubbo.protocol.port=12345 -Dserver.port=9090 -Dmanagement.server.port=9091 -Ddubbo.application.qos-port=22221 -Ddubbo.protocol.accepts=1 -jar dubbo-demo-provider\target\dubbo-provider-1.0-SNAPSHOT.jar

在本机启动了两个consumer:

java -Dserver.port=8080 -Dmanagement.server.port=8081 -Ddubbo.registry.file=xxx.properties -jar dubbo-demo-consumer\target\dubbo-consumer-1.0-SNAPSHOT.jar

java -Dserver.port=8084 -Dmanagement.server.port=8085 -Ddubbo.registry.file=yyy.properties -jar dubbo-demo-consumer\target\dubbo-consumer-1.0-SNAPSHOT.jar

第二个启动的consumer会正常被accepts=1给断开连接。

然后我在admin中动态修改配置,将accepts改为2

发现第二个启动的consumer可以正常连接，没问题

4.在admin页面中，将accepts再次修改成1,发现两个consumer仍然会正常连接，理论上是要有一个被踢下线的才对。

Expected Result

期望只有一个consumer连接，另外一个consumer会由于超过accepts数而拒绝连接

Actual Result

两个consumer都正常连接着，并能够正常对外提供服务

Issue 2:
I have searched the issues of this repository and believe that this is not a duplicate.

I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.7.4-SNAPSHOT

Operating System version: macOS10.12.6

Java version: 1.8

Steps to reproduce this issue

主要是配合dubbo admin的时候，如果意外删除了接口目录，导致之后该接口的实例将不再被发现

启动dubbo-admin

启动dubbo生产者，此时dubbo-admin有该生产者记录

关闭生产者，并且删除该生产者的接口目录

重启生产者，将不会在dubbo-admin上看到相关记录

主要原因是以下回调对anyServices只有add操作，没有delete操作，导致下一次目录变化时，也不会进入if中进行订阅新增接口。

listeners.putIfAbsent(listener, (parentPath, currentChilds) -> {
for (String child : currentChilds) {
child = URL.decode(child);
if (!anyServices.contains(child)) {
anyServices.add(child);
subscribe(url.setPath(child).addParameters(INTERFACE_KEY, child,
Constants.CHECK_KEY, String.valueOf(false)), listener);
}
});
Issue 1:
Environment

Windows build number: Microsoft Windows [Version 10.0.19041.208]
PowerToys version: v0.17
PowerToy module for which you are reporting the bug (if applicable): PowerToys Settings

Steps to reproduce

Make a change to one of the settings

Click save

Expected behaviour

It says 'saving' briefly and then saves.

Actual behaviour

It gets stuck on 'saving'.

Screenshots

Issue 2:
Environment

Windows build number: 10.0.18362.778
PowerToys version: 0.17.0
PowerToy module for which you are reporting the bug: FancyZones

Steps to reproduce

Uninstall previous version of PowerToys

Install 0.17.0

Open PowerToys, things work just fine

Wait for a while

Try to place a window inside a zone, it shows no zones, and acts as if the app no longer running

Can open settings window and interact with toggles and such, but cannot save

Can close settings window

Can sometimes right click > exit on the systray icon, other times i have to force close in task manager

Reopen PowerToys, repeat

Expected behavior

The ability to use FancyZones as long as the PowerToys app is running

Actual behavior

FanzyZones only being usable right after opening, and then no longer working after an undetermined amount of time when trying to snap a window
Issue 1:
Environment

Windows build number: 10.0.18362.0
Windows Terminal version (if applicable): 0.6.2951.0

Steps to reproduce

ssh to a Linux box

seq 100

shrink the window vertically (fewer lines)

scroll back

Expected behavior

See the numbers from 1 to 100

Actual behavior

Lines get permanently lost as the window is made smaller, e.g. the sequence goes like ... 70 71 72 73 78 79 80 81 ...

Issue 2:
Description of the new feature/enhancement

Currently, if you drag back the scrollbar and then resize the window, the viewport jumps back to the "regular" position (the end of the data buffer, and the bottom position of the scrollbar).

It would be better to (approximately) maintain the scrolled position, so that the user keeps seeing whichever data was previously shown.

In VTE we usually track the position at the bottom of the viewport and try to keep that at the bottom; except when fully scrolled back to the top. More details in doc/rewrap.txt.
Issue 1:
There is a type that is quite interesting in typescript void | {}, this type has some unique behavior, everything can be assigned to this type, but the compiler does not infer any property for this type unlike for {} that inherits the basic object properties, the difference with {} is subtile but still pretty interesting:

function func1(val: {} ) {
val.hasOwnProperty('hello'); // no error
}
function func2(val: {} | void) {
val.hasOwnProperty('hello'); // error: Property 'hasOwnProperty' does not exist on type 'void | {}'.
}

However there is not typeguard for void, it could be interesting to add some type guards for this case:

typeof val !== 'undefined'

val !== undefined

val != undefined

val != null

Issue 2:
I think that it should be special bottom type with the following properties:

( T | bottom ) = ( bottom | T ) = T — bottom is unit for type unions;

expression of type bottom is assignable to any other type;

bottom type could be used only as return type of the function (out-only);

if function has return type bottom then all branches of the control flow either throw exceptions or return expression of type bottom;

if all branches of the control flow either throw exceptions or return expression of type bottom and function has no explicit return type then bottom type inferred as the result type;

two functional types are not assignable to each other if exactly one of them has return type bottom (?);

bottom type can't be used as the actual type parameter for the generic type.

rationale

Let's consider the function that always throws:

function alwaysThrows() {
throw new Error("!");
}

and other function that uses it

function test(a: boolean) {
return a ? 123 : alwaysThrow();
}

We expect that test should have type number instead of ( number | void )

In more sophisticated example that involves Promise type declarations:

declare class Promise<T> {
catch<U>(
handler: (reason: any) => U | Promise<U>
): Promise<T | U>; // Note the union here (!)
then<U>(
fulfilled?: (result: T) => U | Promise<U>,
rejected?: (reason: any) => U | Promise<U>
): Promise<U>
}

We expect that

promiseOfString.catch(function(e) {
throw new BusinessError(e);
});

should have the type of Promise<string> instead of Promise<string | void>.

See petkaantonov/bluebird#589 (comment)

Possible explicit annotation that function always throws is using undefined as the type

function alwaysThrows(): undefined {
throw new Error("!");
}
Issue 1:
Summary of the new feature/enhancement

Please, consider adding the old PowerMenu to PowerToys.

I was using it a lot, I had the options to make a Window to be always on top and I was using some others to have transparency.

Issue 2:
Summary of the new feature/enhancement

Useful tools that many Windows developers, testers and sysadmins install are Microsoft (aka Mark Russinovich's) Sysinternals BgInfo and ZoomIt (and Microsoft Garage Mouse without Borders). Please add BgInfo and ZoomIt to Microsoft PowerToys so they can be conveniently installed, discovered, and enhanced. BgInfo is great for remote desktop scenarios when managing many Windows servers, ZoomIt is super usefully when doing a code, UI, spreadsheet or (Visio) drawing peer reviews. Especially useful is ZoomIt's quick hotkeys, screen pen inking and shapes drawing features.

ZoomIt

BgInfo

Proposed technical implementation details (optional)

N/A