fappeningbook.com

I believe this domain is an Adult(-related) domain --> that have to be blocked as..
Domains
Only add the needed one See also #12
fappeningbook.com
www.fappeningbook.com

Content sources
(Please see #35)

External sources (reference)

Screenshots
Screenshot required

Logger output
External Info

All Submissions:

[x] Have you checked to ensure there aren't other open Merge Requests (MR) or Issues for the same update/change?
[x] Added a Screenshot for prove of Adult contents

Todo

[x] Added to Source file?
[x] Added to the RPZ zone adult.mypdns.cloud (@spirillen)

Logger output

+36
||alive.github.com^$websocket,important
--
github.com
0,1
websocket
wss://alive.github.com/_sockets/u/44526987/ws?session=eyJ2IjoiVjMiLCJ1Ijo0NDUyNjk4NywicyI6NTkzMjE0ODQxLCJjIjoxODQxNTkzMTA1LCJ0IjoxNjAyMzQxNzk1fQ%3D%3D--38e44f9ffcd590da68399f2cd7589ae1f8f97b836e8a57d8c7b5577c9653e0ae&shared=true

+25

fappeningbook.com
1
image
https://fappeningbook.com/assets/favicon-16x16.png

+25

fappeningbook.com
1
image
https://fappeningbook.com/assets/apple-touch-icon.png

+24
##.pswp__button--share

fappeningbook.com

dom
https://fappeningbook.com/jennifer-lawrence-nude/

+24
##img[src*="counter.yadro.ru"]

fappeningbook.com

dom
https://fappeningbook.com/jennifer-lawrence-nude/

+24
##button[title="Share"]

fappeningbook.com

dom
https://fappeningbook.com/jennifer-lawrence-nude/

+24
||mc.yandex.ru^
--
fappeningbook.com
3
script
https://mc.yandex.ru/metrika/tag.js

+24
||yadro.ru^
--
fappeningbook.com
3
image
https://counter.yadro.ru/hit?t44.1;rhttps%3A//fappeningbook.com/;s1920*1080*24;uhttps%3A//fappeningbook.com/jennifer-lawrence-nude/;hJennifer%20Lawrence%20Nude%2C%20Fappening%2C%20Sexy%20Photos%2C%20Uncensored%20-%20FappeningBook;0.8641988731349662

+24
||googleapis.com^$important
--
fappeningbook.com
3
css
https://fonts.googleapis.com/css?family=Open+Sans

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/l/y/lynn-carlin/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/200x200/179.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/j/e/jenny-gabrielle/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/g/i/gina-bellman/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/l/i/lisa-collings/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/c/i/cicelys-zelies/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/a/b/abbey-hoes/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/200x200/578.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/200x200/334.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/a/n/anna-maria-kagerer/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/t/e/teresa-mak/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/c/a/carmen-montes/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/a/n/annamaria-demara/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/b/r/brigitte-maier/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/200x200/637.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/avatars/s/h/shane-lynch/avatar.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1496t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1497t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1498t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1499t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1500t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1501t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1502t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1503t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1504t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1505t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1506t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1507t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1508t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1509t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1510t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1511t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/1455.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1512t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1513t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/416.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1514t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1515t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1516t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1517t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/594.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1518t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1519t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1520t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1521t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/1332.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1522t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1523t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1524t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1525t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1526t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/1288.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1527t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1528t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1529t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/38.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1530t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1531t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/846.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1532t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1533t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1534t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1535t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1536t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/1869.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1537t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1538t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1539t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/265.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1540t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1541t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/164x164/1863.png

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1542t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1543t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1544t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/photos/j/e/jennifer-lawrence/2000/1545t.jpg

+24

fappeningbook.com
1
image
https://fappeningbook.com/assets/thefappening.png

+24

fappeningbook.com
3
script
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js

+24

fappeningbook.com
3
script
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js

+24
||googleapis.com^$important
--
fappeningbook.com
3
css
https://fonts.googleapis.com/css?family=Open+Sans

+24

fappeningbook.com
1
script
https://fappeningbook.com/js/functions.js

+24

fappeningbook.com
1
script
https://fappeningbook.com/js/jquery-3.2.1.js

+23

fappeningbook.com
1
doc
https://fappeningbook.com/jennifer-lawrence-nude/

+2

fappeningbook.com
1
image
https://fappeningbook.com/assets/favicon-16x16.png

+2

fappeningbook.com
1
image
https://fappeningbook.com/assets/apple-touch-icon.png

+2
##img[src*="counter.yadro.ru"]

fappeningbook.com

dom
https://fappeningbook.com/

+2

fappeningbook.com
1
font
https://fappeningbook.com/font/fonts/fontawesome-webfont.woff2?v=4.6.1

+2

fappeningbook.com
3
image
https://vqcdn.b-cdn.net/images/PornGeek-Favicon.png

+2

fappeningbook.com
3
image
https://thefappeningblog.com/wp-content/uploads/2017/09/porndude.png

+2
||mc.yandex.ru^
--
fappeningbook.com
3
script
https://mc.yandex.ru/metrika/tag.js

+2
||yadro.ru^
--
fappeningbook.com
3
image
https://counter.yadro.ru/hit?t44.1;r;s1920*1080*24;uhttps%3A//fappeningbook.com/;hNude%20Celebs%20Photos%20-%20FappeningBook;0.47431088417717515

+1
||googleapis.com^$important
--
fappeningbook.com
3
css
https://fonts.googleapis.com/css?family=Open+Sans

+1

fappeningbook.com
1
image
https://fappeningbook.com/assets/new_leaks.png

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/l/a/laura-anderson/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/c/h/chloe-ferry/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/p/a/paige-turnah/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/k/a/katie-waissel/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/c/h/chrishell-stause/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/m/o/moran-atias/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/a/l/alexa-reynen/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/m/a/maja-krag/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/k/a/kanako-iioka/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/q/i/qingweiyingjie/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/assets/avatar.png

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/e/l/elizabeth-jolie/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/v/i/victoria-lee/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/s/a/sara-underwood/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/e/m/emma-watson/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/e/m/emily-ratajkowski/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/j/e/jennifer-lopez/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/k/i/kim-kardashian/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/a/r/ariel-winter/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/s/a/salma-hayek/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/b/e/bella-poarch/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/j/e/jennifer-lawrence/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/m/i/miley-cyrus/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/b/e/bella-thorne/avatar.jpg

+1

fappeningbook.com
1
image
https://fappeningbook.com/avatars/k/e/kendall-jenner/avatar.jpg

+1

fappeningbook.com
3
script
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js

+1

fappeningbook.com
3
script
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js

+1

fappeningbook.com
3
css
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css

+1

fappeningbook.com
3
css
https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css

+1

fappeningbook.com
1
css
https://fappeningbook.com/font/css/font-awesome.css

+1
||googleapis.com^$important
--
fappeningbook.com
3
css
https://fonts.googleapis.com/css?family=Open+Sans

+1

fappeningbook.com
1
script
https://fappeningbook.com/js/functions.js

+1

fappeningbook.com
1
script
https://fappeningbook.com/js/jquery-3.2.1.js

+1

fappeningbook.com
1
css
https://fappeningbook.com/css/styles.css?1

+0

fappeningbook.com
1
doc
https://fappeningbook.com/

+0

www.fappeningbook.com
3
image
https://lustfilms.imgix.net/gnX91VJftmbMTTrQCj1pZ3qOpMKTiLUhZGZfo0o4.jpeg?lossless=true&auto=enhance%2Ccompress%2Cformat&ar=10:3.75&fit=crop&crop=edges&auto=format&dpr=1&null

+0

www.fappeningbook.com
1
doc
http://www.fappeningbook.com/


There seems to be problem with clang-format-10 therefore updating to …

…clang-format-14

I've already jsut deleted it

I've already jsut deleted it

ok, you can than close it or keep it as you wish


Missing MB_TCP_UID in xMBMasterTCPPortSendResponse ( ) (IDFGH-4636)

Environment

Module or chip used:  [ESP32-WROOM-32]
IDF version: v4.3-dev-2586-g526f682397
Build System:         [idf.py]
Compiler version : xtensa-esp32-elf-gcc (crosstool-NG esp-2020r3) 8.4.0
Operating System:     [Linux]
Using an IDE?: [Yes] Eclipse
Power Supply:         [USB]

Problem Description
I am implementing a Modbus TCP/IP application where I need to use the slave addresses [1, 2, 200]. Despite the issue I reported
a few days ago (https://github.com/espressif/esp-idf/issues/6437), I came across another one. The problem lies in the function
xMBMasterTCPPortSendResponse() in port_tcp_master.c and specifically in this part of the code (lines 900+):
    // If socket active then send data
    if (pxInfo->xSockId > -1) {
        // Apply TID field to the frame before send
        pucMBTCPFrame[MB_TCP_TID] = (UCHAR)(pxInfo->usTidCnt >> 8U);
        pucMBTCPFrame[MB_TCP_TID + 1] = (UCHAR)(pxInfo->usTidCnt & 0xFF);
        int xRes = xMBMasterTCPPortWritePoll(pxInfo, pucMBTCPFrame, usTCPLength, MB_TCP_SEND_TIMEOUT_MS);

When we send data using Modbus TCP/IP usually we don't need to include the Unit Identifier byte and we set it to 0. However,
in applications where we need the slave address this byte needs to be set to the desired value. I searched throughout the entire
Modbus software you provided and there isn't any set of the pucMBTCPFrame[MB_TCP_UID] value. Therefore, I propose, in the above piece of code to be added the following line:
        pucMBTCPFrame[MB_TCP_UID] = (UCHAR)(xMbPortConfig.ucCurSlaveIndex & 0xFF);

I checked the send and receive packets and the problem was that the MB_TCP_UID byte in the pucMBTCPFrame was always 0.
Steps to reproduce

If you don't have a Modbus device ready, use a slave simulator and set a simple holding register with slave address !=0
Create a trivial Modbus master TCP/IP application with the esp32 (maybe the example provided already in github) and try to get the value on that slave address of the slave.
Print the send and receive data in port_tcp_master.c in (the end of vMBTCPPortMasterReadPacket() and in xMBMasterTCPPortWritePoll()

Hi @ProKampas,
This current implementation of stack is Modbus TCP stack nor Modbus RTU over TCP. The MB_TCP_UID for this implementation should be always 0 or 0xFF (Not Used). I can not confirm your issue and can not agree with your proposal because of this.
For your reference the Modbus spec says:
Unit Identifier
This field is used for routing purpose when addressing a device on a MODBUS+
or MODBUS serial line sub-network. In that case, the “Unit Identifier” carries the
MODBUS slave address of the remote device:
If the MODBUS server is connected to a MODBUS+ or MODBUS Serial Line
sub-network and addressed through a bridge or a gateway, the MODBUS Unit identifier is necessary to identify the slave device connected on the subnetwork behind the bridge or the gateway.
The destination IP address identifies the bridge itself and the bridge uses the MODBUS Unit identifier to
forward the request to the right slave device.
The MODBUS slave device addresses on serial line are assigned from 1 to
247 (decimal). Address 0 is used as broadcast address.
On TCP/IP, the MODBUS server is addressed using its IP address; therefore, the
MODBUS Unit Identifier is useless. The value 0xFF has to be used.
When addressing a MODBUS server connected directly to a TCP/IP network,
it’s recommended not using a significant MODBUS slave address in the “Unit
Identifier” field. In the event of a re-allocation of the IP addresses within an
automated system and if a IP address previously assigned to a MODBUS
server is then assigned to a gateway, using a significant slave address may
cause trouble because of a bad routing by the gateway. Using a nonsignificant slave address, the gateway will simply discard the MODBUS PDU
with no trouble. 0xFF is recommended for the “Unit Identifier" as nonsignificant value.
Remark : The value 0 is also accepted to communicate directly to a
MODBUS/TCP device.

Hi @ProKampas,
This current implementation of stack is Modbus TCP stack nor Modbus RTU over TCP. The MB_TCP_UID for this implementation should be always 0 or 0xFF (Not Used). I can not confirm your issue and can not agree with your proposal because of this.
For your reference the Modbus spec says:
Unit Identifier
This field is used for routing purpose when addressing a device on a MODBUS+
or MODBUS serial line sub-network. In that case, the “Unit Identifier” carries the
MODBUS slave address of the remote device:
If the MODBUS server is connected to a MODBUS+ or MODBUS Serial Line
sub-network and addressed through a bridge or a gateway, the MODBUS Unit identifier is necessary to identify the slave device connected on the subnetwork behind the bridge or the gateway.
The destination IP address identifies the bridge itself and the bridge uses the MODBUS Unit identifier to
forward the request to the right slave device.
The MODBUS slave device addresses on serial line are assigned from 1 to
247 (decimal). Address 0 is used as broadcast address.
On TCP/IP, the MODBUS server is addressed using its IP address; therefore, the
MODBUS Unit Identifier is useless. The value 0xFF has to be used.
When addressing a MODBUS server connected directly to a TCP/IP network,
it’s recommended not using a significant MODBUS slave address in the “Unit
Identifier” field. In the event of a re-allocation of the IP addresses within an
automated system and if a IP address previously assigned to a MODBUS
server is then assigned to a gateway, using a significant slave address may
cause trouble because of a bad routing by the gateway. Using a nonsignificant slave address, the gateway will simply discard the MODBUS PDU
with no trouble. 0xFF is recommended for the “Unit Identifier" as nonsignificant value.
Remark : The value 0 is also accepted to communicate directly to a
MODBUS/TCP device.

Hi @alisitsyn ,
I understand your point and thank you for your response. However, I would like to point out that Modbus RTU over TCP/IP is
a protocol in use. And without many changes in your code structure you can add it in your codebase and give us the opportunity
to use it. In my opinion, It's a feature that will be extremely useful and it requires minor changes in the software.

Hi @alisitsyn ,
I understand your point and thank you for your response. However, I would like to point out that Modbus RTU over TCP/IP is
a protocol in use. And without many changes in your code structure you can add it in your codebase and give us the opportunity
to use it. In my opinion, It's a feature that will be extremely useful and it requires minor changes in the software.

Hi @ProKampas,
You are right. The Modbus stack architecture was designed to support all versions of protocol types. This implementation is planned and the code of TCP port layer designed to support this type of communication.

Hi @ProKampas,
You are right. The Modbus stack architecture was designed to support all versions of protocol types. This implementation is planned and the code of TCP port layer designed to support this type of communication.

Hi @alisitsyn ,
Thank you. I am looking forward to your implementation.

Hi @alisitsyn ,
Thank you. I am looking forward to your implementation.

Hi @ProKampas,
This will take for a while. I will consider your Issue as a feature request to implement the Modbus RTU over TCP.

Hi @ProKampas,
This will take for a while. I will consider your Issue as a feature request to implement the Modbus RTU over TCP.

Hi @ProKampas,
Unfortunately the update is still not merged. The implemented fix can be found in the local component (mb_component folder) of the project stored here:
https://github.com/alisitsyn/modbus_support/tree/mb_support/master_uid_gaps_rtu_over_tcp_support
It will be possible to merge the fix soon.

The setting UID in the MBAP has been merged into master with commit ID 2cad565781eb95ffbbe0840f801016acaca82e86 .
It needs some time to sync with github.

Thanks for reporting, fix on master is available at https://github.com/espressif/esp-idf/commit/2cad565781eb95ffbbe0840f801016acaca82e86 and fix on release/4.3 is available at https://github.com/espressif/esp-idf/commit/5c78283f6eb9deea0b371851e318ea5f00675f14, feel free to reopen if the issue still happens, thanks.

i recently bumped into an inverter that only works with a properly specified slave uid when using modbus tcp.
if you need more details I can scrape the facts.
each cheeky bastard ( modbus device ) has its own way. little differences but in this world an almost is a no. I got a nice collection of stories...

Hi @crmabs ,
Can the kconfig option "FMB_TCP_UID_ENABLED" help you to communicate with your inverter?  There are many different modbus devices with custom options and behavior that for example support UID = 0, and also other UIDs at the same time.
Please describe your interesting stories here....
Thanks.

I promise sharing those stories, but first I need a fix for this, and instead of fiddle with your code I drew a cartoon for you.
We are reading a Fronius Inverter Symo Gen24.
This is how I test the stuff with a neat command line tool. The green underlined parts are showing how I must address the device. From this approach I suspect there is a gateway which does the RTU over TCP. The command resulted a proper value. All good so far.

The op above got captured with Wireshark. The selected byte is the slave UID. After that the usual modbus data, cmd,reg,length. Ok, so this works.

The runtime log. I added a buffer dump line to see what gets sent. That's where the problem shows itself.

As per your log and code the master assigns the UID field incorrectly as if the CONFIG_FMB_TCP_UID_ENABLED is not set, but it is set according to your sdkconfig. The functionality related to FMB_TCP_UID_ENABLED is tested before the merge and confirmed as functional. The issue can be observed due to incorrect FMB_TCP_UID_ENABLED configuration or if the incorrect version of the component is compiled instead of correct one. Please make sure you exclude the old component and use new one in your application. To exclude old component you need to include the line 'set(EXCLUDE_COMPONENTS freemodbus)' in your CMakeLists.txt file and use the manifest file like here. Please take a look to your *.map file to make sure if correct component is included into your project. I think you may be using the esp-idf v4.4 and do not exclude that component correctly. The generatated sdkconfig file should include the CONFIG_FMB_TCP_UID_ENABLED=y
The below is the log of TCP master with component esp-modbus v1.0.10. The "UID to send: 1" is what is actually set in the MBAP frame.
I (4050) wifi:AP's beacon interval = 102400 us, DTIM period = 1
I (4970) esp_netif_handlers: example_netif_sta ip: <IP_ADDRESS>, mask: <IP_ADDRESS>, gw: <IP_ADDRESS>
I (4970) example_connect: Got IPv4 event: Interface "example_netif_sta" address: <IP_ADDRESS>
I (4980) example_common: Connected to example_netif_sta
I (4980) example_common: - IPv4 address: <IP_ADDRESS>,
I (4990) wifi:Set ps type: 0

I (4990) uart: ESP_INTR_FLAG_IRAM flag not set while CONFIG_UART_ISR_IN_IRAM is enabled, flag updated
Waiting IP0 from stdin:

I (16040) MASTER_TEST: IP(0) = [<IP_ADDRESS>] set from stdin.
Waiting IP1 from stdin:
I (23990) wifi:<ba-add>idx:0 (ifx:0, 64:d1:54:1a:23:5b), tid:0, ssn:5, winSize:64

I (24510) MASTER_TEST: IP(1) = [<IP_ADDRESS>] set from stdin.
Waiting IP2 from stdin:

I (33550) MASTER_TEST: IP(2) = [<IP_ADDRESS>] set from stdin.
I (33550) MASTER_TEST: IP(3) is not set in the table.
I (33570) MASTER_TEST: Configured 3 IP addresse(s).
I (33570) MASTER_TEST: Modbus master stack initialized...
I (33570) MB_TCP_MASTER_PORT: TCP master stack initialized.
I (33580) MB_TCP_MASTER_PORT: Host[IP]: "<IP_ADDRESS>"[<IP_ADDRESS>]
I (33580) MB_TCP_MASTER_PORT: Add slave IP: <IP_ADDRESS>
I (33580) MB_TCP_MASTER_PORT: Host[IP]: "<IP_ADDRESS>"[<IP_ADDRESS>]
I (33600) MB_TCP_MASTER_PORT: Add slave IP: <IP_ADDRESS>
I (33600) MB_TCP_MASTER_PORT: Host[IP]: "<IP_ADDRESS>"[<IP_ADDRESS>]
I (33610) MB_TCP_MASTER_PORT: Add slave IP: <IP_ADDRESS>
I (33620) MB_TCP_MASTER_PORT: Connecting to slaves...
---I (33660) MB_TCP_MASTER_PORT: Connected 3 slaves, start polling...
I (34210) MASTER_TEST: Start modbus test...
I (34210) MB_TCP_MASTER_PORT: UID to send: 1
I (34240) MASTER_TEST: Characteristic #0 Data_channel_0 (Volts) value = 0.000000 (0x0) read successful.
I (34240) MB_TCP_MASTER_PORT: UID to send: 1
I (34270) MASTER_TEST: Characteristic #1 Humidity_1 (%rH) value = 0.000000 (0x0) read successful.
I (34280) MB_TCP_MASTER_PORT: UID to send: 1
I (34300) MASTER_TEST: Characteristic #2 Temperature_1 (C) value = 0.000000 (0x0) read successful.
I (34310) MB_TCP_MASTER_PORT: UID to send: 200
I (34360) MASTER_TEST: Characteristic #3 Humidity_2 (%rH) value = 0.000000 (0x0) read successful.
I (34370) MB_TCP_MASTER_PORT: UID to send: 200

Please check the recommendations above then clean and rebuild your project.
Let me know if you still have problems with this.

dudz, How come that only these are found?

Dudz, how come only these two are found?
The first one is a proper tcp init for slave mode. What I'm missing is the master mode tcp init with similar code.
Again, these are just first blinks on my side.

This is what happens if I forcible change the input address before ...writePoll(...     It tries to map that to the iptable..

@crmabs ,

The first one is a proper tcp init for slave mode. What I'm missing is the master mode tcp init with similar code.
Again, these are just first blinks on my side.

the master init is here
master supports the list of slaves. The master takes the uid for slave from data dictionary. The ip address is defined in the slave_ip_address_table which is assigned using the field ip_addr  in the communication structure. During the initialization master creates the list of slaves info where associates each slave uid with its IP address then uses it to connect to each slave.
If the initialization of master is not completed correctly the master can not write to the slave which is not correctly registered in the port layer and is not connected.
The slave_uid in the communication structure is used only for slave and is dummy field for the master.
In current implementation if you need to send data to different slave UID with the same IP you need to add the additional CID in data dictionary and add the same address in IP table for this CID.

@crmabs ,

Is it somehow possible to do the whole 'exclude freemodbus' raindance at component level?
Just to be clear:
the main CMakeLists.txt file must stay intact and I'd like to do all the extra dirs and exclude freemodbus on component level.

It is possible to check the list of the components in esp-modbus cmake file and check if the freemodbus component is in the list because the esp-idf component dependencies are added earlier. However, the order of the components is not guaranteed and I can not rely on this in later esp-idf releases. Because of this I can not reliably override the freemodbus component or just exclude it from the list. What I definitely can do is to show the message if the freemodbus component is in the list of build components and should be excluded in the project cmake file. Even this may not work in later updates of esp-idf because the order of components in the list is not guaranteed. I would propose to do it on the project level to avoid possible issues. Also, this should not be a big issue.


http: Don't verify host if verify_ssl is disabled

Sometimes OpenShift self-signed certificate isn't created correctly and
CommonName is <IP_ADDRESS> instead of IP address/FQDN under which is
OpenShift available. This change allows ignore this inconsistency which
would otherwise cause following fatal error:

SSL: certificate subject name (<IP_ADDRESS>) does not match target host
name 'openshift.example.com'

:+1:


feat(module:input): support nzReadonly property

Close #231
PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Application (the showcase website) / infrastructure changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number:  #231
What is the new behavior?
Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information

Coverage decreased (-0.04%) to 40.979% when pulling fb8f64aff50453f41fee908c230561cced2206b5 on SangKa:input-readonly-feature into 1796106b40150ea7e43b2a389bfb832b40f8a8b7 on NG-ZORRO:master.


clean up Bit._register and Bit._index

Summary
~On top of https://github.com/Qiskit/qiskit/pull/10996, so on hold~
Details and comments
Cleaning up Bit._register and Bit._index is hard.

#10996 merged, removing on hold

Superseded by https://github.com/Qiskit/qiskit/pull/11596

bring it up, maybe less invasive than https://github.com/Qiskit/qiskit/pull/11596


Kmom01

Adds first assignment kmom01 of phpmvc course.
Me-pages with "throw-dice page" and calender page.

Did not want to do a pull request on mosbth/Anax-MVC.
Intention was to do a pull request on fnlive/Anax-MVC forked from mosbth/Anax-MVC.
Will try to do a revert.


Give consistency level descriptions their own headers

It would be nice if instead of using bullet points to describe the different consistency levels, you used a h3 tag (###)  so that they are both easier to spot and differentiate, and easier to link to.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2b3fb7da-5483-160d-1781-d4abff9d798d
Version Independent ID: d5e51b7e-7f34-c7df-ce4f-ee4bf5c8059a
Content: Consistency levels in Azure Cosmos DB
Content Source: articles/cosmos-db/consistency-levels.md
Service: cosmos-db
GitHub Login: @markjbrown
Microsoft Alias: mjbrown

@987a73ae7992294d Thanks for the feedback! We will review and update accordingly.

@987a73ae7992294d Thank you for the feedback. This is being assigned to the content author to evaluate and update as appropriate.

@987a73ae7992294d thank you for your suggestion, I submitted a PR to update the doc. The changes will be live later today. We will now close this issue.
#please-close


Add basic docs for Hosted Cluster workload distribution

What this PR does / why we need it:
This introduces high level docs for a management cluster operator to leverage hypershift.openshift.io/control-plane: true and hypershift.openshift.io/cluster: ${HostedControlPlane Namespace} to implement a Hosted Cluster workload distribution strategy.
Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #
Checklist

[x] Subject and description added to both, commit and PR.
[x] Relevant issues have been referenced.
[x] This change includes docs.
[ ] This change includes unit tests.

@enxebre nice! You'll need to add this new file to https://github.com/openshift/hypershift/blob/main/docs/mkdocs.yml#L35 for it to be included in the TOC. In older iterations of the docs system that was automatic, but to make everything look and work the way it currently does I was forced to use an explicit TOC definition in mkdocs.yml for now.

/retest
/lgtm


YogaEdge.ALL causes YogaCore crash in Java

Report
I searched issues and this issue didn't reported before. This issue occurred in Java.
Issues and Steps to Reproduce
Replaces this with steps to repro your issue.
Expected Behavior
When I set border. padding or margin with YogaEdge.ALL, I want to get this value with YogaEdge.ALL. Even if I set any other YogaEdge like YogaEdge.BOTTOM and when I try to get YogaEdge.ALL it must return value like YogaValue.UNDEFINED which is identical.
Actual Behavior
When i try to get border. padding or margin with YogaEdge.ALL core crashing with message below.
#CrashLog
YG-layout: Cannot get computed value of multi-edge shorthands

This is being fixed. The commit should be landing today. Thanks for the report!

Thank you for fixing.


Lumen 5.8 deployment failed – no commands defined in the "storage" namespace

Q
A

Issue Type
Bug

Deployer Version
6.4.3

Local Machine OS
MacOS Mojave

Remote Machine OS
Ubuntu 18.04.2 LTS

Description
Attempting to deploy a Lumen project to an Ubuntu AWS EC2 server. The process begins however halts mid-way with this error logged by Lumen.
Symfony\Component\Console\Exception\NamespaceNotFoundException: There are no commands defined in the "storage" namespace. in /var/www/service1/releases/1/vendor/symfony/console/Application.php:589
Stack trace:
#0 /var/www/service1/releases/1/vendor/symfony/console/Application.php(638): Symfony\Component\Console\Application->findNamespace('storage')
#1 /var/www/service1/releases/1/vendor/symfony/console/Application.php(237): Symfony\Component\Console\Application->find('storage:link')
#2 /var/www/service1/releases/1/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /var/www/service1/releases/1/vendor/illuminate/console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 /var/www/service1/releases/1/vendor/laravel/lumen-framework/src/Console/Kernel.php(115): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 /var/www/service1/releases/1/artisan(35): Laravel\Lumen\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#6 {main} {"exception":"[object] (Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException(code: 0): There are no commands defined in the \"storage\" namespace. at /var/www/service1/releases/1/vendor/symfony/console/Application.php:589)"} []

Steps to reproduce
Content of deploy.php
<?php
namespace Deployer;

require 'recipe/laravel.php';

// Project name
set('application', 'service-website-crawler');

// Project repository
set('repository', 'git@bitbucket.org:xxxxxxxxxxx/xxxxxxxxxxxx.git');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true);

// Shared files/dirs between deploys
add('shared_files', []);
add('shared_dirs', []);

// Writable dirs by web server
add('writable_dirs', []);

// Hosts

<EMAIL_ADDRESS>    ->set('deploy_path', '/var/www/service1');

// Tasks

task('build', function () {
    run('cd {{release_path}} && build');
});

// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');

Output log
[localhost] > git rev-parse --abbrev-ref HEAD
[localhost] < master
✈ Deploying master on<EMAIL_ADDRESS>• done on<EMAIL_ADDRESS>➤ Executing task deploy:prepare
<EMAIL_ADDRESS>> echo $0
<EMAIL_ADDRESS>< ssh multiplexing initialization
<EMAIL_ADDRESS>< Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1039-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Jun  5 16:51:22 UTC 2019

  System load:  0.0               Processes:           111
  Usage of /:   8.0% of 29.02GB   Users logged in:     1
  Memory usage: 25%               IP address for eth0: <IP_ADDRESS>
  Swap usage:   0%

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

8 packages can be updated.
1 update is a security update.

<EMAIL_ADDRESS>< bash
<EMAIL_ADDRESS>> if [ ! -d /var/www/service1 ]; then mkdir -p /var/www/service1; fi
<EMAIL_ADDRESS>> if [ ! -L /var/www/service1/current ] && [ -d /var/www/service1/current ]; then echo 'true'; fi
<EMAIL_ADDRESS>> cd /var/www/service1 && if [ ! -d .dep ]; then mkdir .dep; fi
<EMAIL_ADDRESS>> cd /var/www/service1 && if [ ! -d releases ]; then mkdir releases; fi
<EMAIL_ADDRESS>> cd /var/www/service1 && if [ ! -d shared ]; then mkdir shared; fi
• done on<EMAIL_ADDRESS>✔ Ok [1s 246ms]
➤ Executing task deploy:lock
<EMAIL_ADDRESS>> if [ -f /var/www/service1/.dep/deploy.lock ]; then echo 'true'; fi
<EMAIL_ADDRESS>> touch /var/www/service1/.dep/deploy.lock
• done on<EMAIL_ADDRESS>✔ Ok [156ms]
➤ Executing task deploy:release
<EMAIL_ADDRESS>> cd /var/www/service1 && (if [ -h release ]; then echo 'true'; fi)
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> cd /var/www/service1 && (rm -rf "$(readlink release)")
<EMAIL_ADDRESS>> cd /var/www/service1 && (rm release)
<EMAIL_ADDRESS>> cd /var/www/service1 && (if [ -d releases ] && [ "$(ls -A releases)" ]; then echo 'true'; fi)
<EMAIL_ADDRESS>> cd /var/www/service1 && (if [ -d /var/www/service1/releases/1 ]; then echo 'true'; fi)
<EMAIL_ADDRESS>> cd /var/www/service1 && (date +"%Y%m%d%H%M%S")
<EMAIL_ADDRESS><<PHONE_NUMBER>5124
<EMAIL_ADDRESS>> cd /var/www/service1 && (echo '20190605165124,1' >> .dep/releases)
<EMAIL_ADDRESS>> cd /var/www/service1 && (mkdir /var/www/service1/releases/1)
<EMAIL_ADDRESS>> cd /var/www/service1 && (if [[ $(man ln 2>&1 || ln -h 2>&1 || ln --help 2>&1) =~ '--relative' ]]; then echo 'true'; fi)
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> cd /var/www/service1 && (ln -nfs --relative /var/www/service1/releases/1 /var/www/service1/release)
• done on<EMAIL_ADDRESS>✔ Ok [1s 75ms]
➤ Executing task deploy:update_code
<EMAIL_ADDRESS>> command -v 'git' || which 'git' || type -p 'git'
<EMAIL_ADDRESS>< /usr/bin/git
<EMAIL_ADDRESS>> /usr/bin/git version
<EMAIL_ADDRESS>< git version 2.17.1
<EMAIL_ADDRESS>> cd /var/www/service1 && (if [ -h /var/www/service1/release ]; then echo 'true'; fi)
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> cd /var/www/service1 && (readlink /var/www/service1/release)
<EMAIL_ADDRESS>< releases/1
<EMAIL_ADDRESS>> cd /var/www/service1 && (/usr/bin/git clone -b master  --recursive  git@bitbucket.org:europeancannabisholdings/service-business-wire-crawler.git /var/www/service1/releases/1 2>&1)
Cloning into '/var/www/service1/releases/1'...
remote: Counting objects: 171, done.
remote: Compressing objects: 100% (150/150), done.
remote: Total 171 (delta 55), reused 0 (delta 0)
Receiving objects: 100% (171/171), 38.32 KiB | 306.00 KiB/s, done.
Resolving deltas: 100% (55/55), done.
Connection to service-business-wire-crawler.brainofcannabis.com closed.
• done on<EMAIL_ADDRESS>✔ Ok [7s 328ms]
➤ Executing task deploy:shared
<EMAIL_ADDRESS>> if [ -d /var/www/service1/shared/storage ]; then echo 'true'; fi
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> rm -rf /var/www/service1/releases/1/storage
<EMAIL_ADDRESS>> mkdir -p `dirname /var/www/service1/releases/1/storage`
<EMAIL_ADDRESS>> ln -nfs --relative /var/www/service1/shared/storage /var/www/service1/releases/1/storage
<EMAIL_ADDRESS>> mkdir -p /var/www/service1/shared/.
<EMAIL_ADDRESS>> if [ -f /var/www/service1/shared/.env ]; then echo 'true'; fi
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> if [ -f $(echo /var/www/service1/releases/1/.env) ]; then rm -rf /var/www/service1/releases/1/.env; fi
<EMAIL_ADDRESS>> if [ ! -d $(echo /var/www/service1/releases/1/.) ]; then mkdir -p /var/www/service1/releases/1/.;fi
<EMAIL_ADDRESS>> touch /var/www/service1/shared/.env
<EMAIL_ADDRESS>> ln -nfs --relative /var/www/service1/shared/.env /var/www/service1/releases/1/.env
• done on<EMAIL_ADDRESS>✔ Ok [631ms]
➤ Executing task deploy:vendors
<EMAIL_ADDRESS>> if hash unzip 2>/dev/null; then echo 'true'; fi
To speed up composer installation setup "unzip" command with PHP zip extension https://goo.gl/sxzFcD
<EMAIL_ADDRESS>> if hash composer 2>/dev/null; then echo 'true'; fi
<EMAIL_ADDRESS>> command -v 'php' || which 'php' || type -p 'php'
<EMAIL_ADDRESS>< /usr/bin/php
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && curl -sS https://getcomposer.org/installer | /usr/bin/php
<EMAIL_ADDRESS>< All settings correct for using Composer
<EMAIL_ADDRESS>< Downloading...
<EMAIL_ADDRESS>< Composer (version 1.8.5) successfully installed to: /var/www/service1/releases/1/composer.phar
<EMAIL_ADDRESS>< Use it: php composer.phar
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && /usr/bin/php /var/www/service1/releases/1/composer.phar install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader
<EMAIL_ADDRESS>< Loading composer repositories with package information
<EMAIL_ADDRESS>< Updating dependencies
<EMAIL_ADDRESS>< Dependency resolution completed in 0.128 seconds
<EMAIL_ADDRESS>< Analyzed 15408 packages to resolve dependencies
<EMAIL_ADDRESS>< Analyzed 111920 rules to resolve dependencies
<EMAIL_ADDRESS>< Dependency resolution completed in 0.000 seconds
<EMAIL_ADDRESS>< Package operations: 60 installs, 0 updates, 0 removals
<EMAIL_ADDRESS>< Installs: doctrine/event-manager:v1.0.0, doctrine/cache:v1.8.0, doctrine/dbal:v2.9.2, symfony/polyfill-ctype:v1.11.0, phpoption/phpoption:1.5.0, vlucas/phpdotenv:v3.3.3, symfony/polyfill-php72:v1.11.0, symfony/polyfill-mbstring:v1.11.0, symfony/var-dumper:v4.3.0, symfony/polyfill-intl-idn:v1.11.0, symfony/mime:v4.3.0, symfony/http-foundation:v4.3.0, psr/log:1.1.0, symfony/polyfill-php73:v1.11.0, symfony/debug:v4.3.0, symfony/event-dispatcher-contracts:v1.1.1, symfony/event-dispatcher:v4.3.0, symfony/http-kernel:v4.3.0, nikic/fast-route:v1.3.0, dragonmantank/cron-expression:v2.3.0, symfony/finder:v4.3.0, symfony/service-contracts:v1.1.2, symfony/console:v4.3.0, monolog/monolog:1.24.0, symfony/translation-contracts:v1.1.2, symfony/translation:v4.3.0, nesbot/carbon:2.19.1, psr/simple-cache:1.0.1, psr/container:1.0.0, illuminate/contracts:v5.8.20, doctrine/inflector:v1.3.0, illuminate/support:v5.8.20, illuminate/log:v5.8.20, illuminate/filesystem:v5.8.20, illuminate/container:v5.8.20, illuminate/events:v5.8.20, illuminate/view:v5.8.20, illuminate/translation:v5.8.20, doctrine/lexer:v1.0.1, egulias/email-validator:2.1.8, illuminate/validation:v5.8.20, symfony/process:v4.3.0, opis/closure:3.3.0, illuminate/database:v5.8.20, illuminate/console:v5.8.20, illuminate/queue:v5.8.20, illuminate/pipeline:v5.8.20, illuminate/pagination:v5.8.20, illuminate/session:v5.8.20, illuminate/http:v5.8.20, illuminate/hashing:v5.8.20, illuminate/encryption:v5.8.20, illuminate/config:v5.8.20, illuminate/cache:v5.8.20, illuminate/bus:v5.8.20, illuminate/broadcasting:v5.8.20, illuminate/auth:v5.8.20, laravel/lumen-framework:v5.8.8, paquettg/string-encode:1.0.1, paquettg/php-html-parser:2.0.2
<EMAIL_ADDRESS>< As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension.
<EMAIL_ADDRESS>< This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost.
<EMAIL_ADDRESS>< Installing 'unzip' may remediate them.
<EMAIL_ADDRESS><   - Installing doctrine/event-manager (v1.0.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing doctrine/cache (v1.8.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing doctrine/dbal (v2.9.2):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/polyfill-ctype (v1.11.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing phpoption/phpoption (1.5.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing vlucas/phpdotenv (v3.3.3): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/polyfill-php72 (v1.11.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/polyfill-mbstring (v1.11.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/var-dumper (v4.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/polyfill-intl-idn (v1.11.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/mime (v4.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/http-foundation (v4.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing psr/log (1.1.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/polyfill-php73 (v1.11.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/debug (v4.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/event-dispatcher-contracts (v1.1.1): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/event-dispatcher (v4.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/http-kernel (v4.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing nikic/fast-route (v1.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing dragonmantank/cron-expression (v2.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/finder (v4.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/service-contracts (v1.1.2): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/console (v4.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing monolog/monolog (1.24.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/translation-contracts (v1.1.2):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/translation (v4.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing nesbot/carbon (2.19.1):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing psr/simple-cache (1.0.1): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing psr/container (1.0.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/contracts (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing doctrine/inflector (v1.3.0): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/support (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/log (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/filesystem (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/container (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/events (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/view (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/translation (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing doctrine/lexer (v1.0.1): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing egulias/email-validator (2.1.8):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/validation (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing symfony/process (v4.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing opis/closure (3.3.0):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/database (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/console (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/queue (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/pipeline (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/pagination (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/session (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/http (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/hashing (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/encryption (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/config (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/cache (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/bus (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/broadcasting (v5.8.20):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing illuminate/auth (v5.8.20): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing laravel/lumen-framework (v5.8.8):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing paquettg/string-encode (1.0.1):
<EMAIL_ADDRESS>< Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS><   - Installing paquettg/php-html-parser (2.0.2): Loading from cache
<EMAIL_ADDRESS><  Extracting archive
<EMAIL_ADDRESS>< Writing lock file
<EMAIL_ADDRESS>< Generating optimized autoload files
• done on<EMAIL_ADDRESS>✔ Ok [11s 27ms]
➤ Executing task deploy:writable
<EMAIL_ADDRESS>> ps axo comm,user | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | sort | awk '{print $2}' | uniq
<EMAIL_ADDRESS>< www-data
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (mkdir -p bootstrap/cache storage storage/app storage/app/public storage/framework storage/framework/cache storage/framework/sessions storage/framework/views storage/logs)
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (chmod 2>&1; true)
<EMAIL_ADDRESS>< chmod: missing operand
<EMAIL_ADDRESS>< Try 'chmod --help' for more information.
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (if hash setfacl 2>/dev/null; then echo 'true'; fi)
<EMAIL_ADDRESS>< true
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p bootstrap/cache | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (setfacl -RL -m u:"www-data":rwX -m u:`whoami`:rwX bootstrap/cache)
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (setfacl -dRL -m u:"www-data":rwX -m u:`whoami`:rwX bootstrap/cache)
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/app | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/app/public | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/framework | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/framework/cache | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/framework/sessions | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/framework/views | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && (getfacl -p storage/logs | grep "^user:www-data:.*w" | wc -l)
<EMAIL_ADDRESS>< 1
• done on<EMAIL_ADDRESS>✔ Ok [1s 149ms]
➤ Executing task artisan:storage:link
<EMAIL_ADDRESS>> cd /var/www/service1/releases/1 && /usr/bin/php artisan --version
<EMAIL_ADDRESS>< Laravel Framework Lumen (5.8.8) (Laravel Components 5.8.*)
<EMAIL_ADDRESS>> /usr/bin/php /var/www/service1/releases/1/artisan storage:link
<EMAIL_ADDRESS>> Symfony\Component\Console\Exception\NamespaceNotFoundException: There are no commands defined in the "storage" namespace. in /var/www/service1/releases/1/vendor/symfony/console/Application.php:589
<EMAIL_ADDRESS>> Stack trace:
<EMAIL_ADDRESS>> #0 /var/www/service1/releases/1/vendor/symfony/console/Application.php(638): Symfony\Component\Console\Application->findNamespace('storage')
<EMAIL_ADDRESS>> #1 /var/www/service1/releases/1/vendor/symfony/console/Application.php(237): Symfony\Component\Console\Application->find('storage:link')
<EMAIL_ADDRESS>> #2 /var/www/service1/releases/1/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
<EMAIL_ADDRESS>> #3 /var/www/service1/releases/1/vendor/illuminate/console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
<EMAIL_ADDRESS>> #4 /var/www/service1/releases/1/vendor/laravel/lumen-framework/src/Console/Kernel.php(115): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
<EMAIL_ADDRESS>> #5 /var/www/service1/releases/1/artisan(35): Laravel\Lumen\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #6 {main} {"exception":"[object] (Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException(code: 0): There are no commands defined in the \"storage\" namespace. at /var/www/service1/releases/1/vendor/symfony/console/Application.php:589)"} []
➤ Executing task deploy:failed
• done on<EMAIL_ADDRESS>✔ Ok [0ms]
➤ Executing task deploy:unlock
<EMAIL_ADDRESS>> rm -f /var/www/service1/.dep/deploy.lock
• done on<EMAIL_ADDRESS>✔ Ok [70ms]

In Client.php line 99:

  [Deployer\Exception\RuntimeException (255)]
  The command "/usr/bin/php /var/www/service1/releases/1/artisan storage:link" failed.

  Exit Code: 255 (Unknown error)

  Host Name<EMAIL_ADDRESS>

  ================
  [2019-06-05 16:16:50] production.ERROR: Symfony\Component\Console\Exception\NamespaceNotFoundException: There are no commands defined in the "storage" namespace. in /var/www/service1/releases/1/vendor/symfony/console/Application.php:589 Stack trace: #0 /var/www/service1/releases/1/vendor/symfony/console/Application.php(638): Symfony\Component\Console\Application->findNamespace('storage') #1 /var/www/service1/releases/1/vendor/symfony/console/Application.php(237): Symfony\Component\Console\Application->find('storage:link') #2 /var/www/service1/releases/1/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #3 /var/www/service1/releases/1/vendor/illuminate/console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #4 /var/www/service1/releases/1/vendor/laravel/lumen-framework/src/Console/Kernel.php(115): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #5 /var/www/service1/releases/1/artisan(35): Laravel\Lumen\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #6 {main} {"exception":"[object] (Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException(code: 0): There are no commands defined in the \"storage\" namespace. at /var/www/service1/releases/1/vendor/symfony/console/Application.php:589)"} []

Exception trace:
 Deployer\Ssh\Client->run() at phar:///usr/local/bin/dep/src/functions.php:304
 Deployer\run() at phar:///usr/local/bin/dep/recipe/laravel.php:137
 Deployer\Deployer::Deployer\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/dep/src/Task/Task.php:105
 Deployer\Task\Task->run() at phar:///usr/local/bin/dep/src/Executor/SeriesExecutor.php:60
 Deployer\Executor\SeriesExecutor->run() at phar:///usr/local/bin/dep/src/Console/TaskCommand.php:142
 Deployer\Console\TaskCommand->execute() at phar:///usr/local/bin/dep/vendor/symfony/console/Command/Command.php:252
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/dep/vendor/symfony/console/Application.php:946
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/dep/src/Console/Application.php:133
 Deployer\Console\Application->doRunCommand() at phar:///usr/local/bin/dep/vendor/symfony/console/Application.php:248
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/dep/vendor/symfony/console/Application.php:148
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/dep/src/Deployer.php:331
 Deployer\Deployer::run() at phar:///usr/local/bin/dep/bin/dep:125
 require() at /usr/local/bin/dep:4

From a previous Lumen issue I found here, I think I have a potential "fix"(?). I've amended my deploy.php file to include the following, which I pulled out of the Laravel Recipe. Note the lines I have commented out which were failing for Lumen:
task('deploy', [
    'deploy:info',
    'deploy:prepare',
    'deploy:lock',
    'deploy:release',
    'deploy:update_code',
    'deploy:shared',
    'deploy:vendors',
    'deploy:writable',
    // 'artisan:storage:link',
    // 'artisan:view:clear',
    // 'artisan:config:cache',
    'artisan:optimize',
    'deploy:symlink',
    'deploy:unlock',
    'cleanup',
]);

Could someone well versed in this project please let me know if this is the appropriate thing to do? If so, it would be great for the sake of keeping the deploy.php file to a minimum, to have the Laravel Recipe updated to test for the lack of these artisan processes in Lumen, and therefore not attempt to run them.
Full deploy.php file for reference:
<?php
namespace Deployer;

require 'recipe/laravel.php';

// Project name
set('application', 'xxxxxxxxxxxxx');

// Project repository
set('repository', 'git@bitbucket.org:xxxxxxxxx/xxxxxxxxx.git');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true);

// Shared files/dirs between deploys
add('shared_files', []);
add('shared_dirs', []);

// Writable dirs by web server
add('writable_dirs', []);

// Hosts

<EMAIL_ADDRESS>    ->stage('production')
    ->set('deploy_path', '/var/www/service1');

// Tasks

task('build', function () {
    run('cd {{release_path}} && build');
});

task('deploy', [
    'deploy:info',
    'deploy:prepare',
    'deploy:lock',
    'deploy:release',
    'deploy:update_code',
    'deploy:shared',
    'deploy:vendors',
    'deploy:writable',
    // 'artisan:storage:link',
    // 'artisan:view:clear',
    // 'artisan:config:cache',
    'artisan:optimize',
    'deploy:symlink',
    'deploy:unlock',
    'cleanup',
]);

// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');

@iamphilrae Hi Phil! As you can see here https://github.com/deployphp/deployer/tree/master/recipe, unfortunately, there is no recipe for Lumen. This means that you could a) take basic common.php and customize with your steps (which you can grab from laravel recipe, for example), b) take laravel recipe and customize it, but be aware that it could be changed in the future along with new major laravel release, c) create new recipe and push it as Pull Request. You can see, that any framework specific recipe is a common.php with additional steps. So, you could override steps, use them or not. It doesn't bring any overhead.
To summarize: I think that in your case, overriding Laravel main deploy task is okay.

Thanks @pluseg. I was under the impression from this repo's past history that the Laraval recipe was intended to be compatible with Lumen as well (out the box). I've managed to get it to run, however my Laravel/Lumen knowledge is very limited so I wouldn't be confident in posting a PR. My answer above is 'working' though so the history is there for anyone looking in the future.
Thanks


Strange Boolean behaviour

irb(main):016:0> Virtus::Attribute.build(true).is_a?(Virtus::Attribute::Boolean)
=> true
irb(main):017:0> Virtus::Attribute.build(false).is_a?(Virtus::Attribute::Boolean)
=> false

Found it out while investigating a bug in grape.

Yeah, looks like FalseClass isn't listed as a primitive for it: https://github.com/solnic/virtus/blob/master/lib/virtus/attribute/boolean.rb#L18

It also looks like only one primitive type can be set.
(Oh, Ruby, TrueClass and FalseClass, seriously? =))

Ruby has no primitive types.

I meant primitive attribute of Virtus::Attribute class.

@envygeeks Virtus::Attribute has a primitive accessor: https://github.com/solnic/virtus/blob/master/lib/virtus/attribute.rb#L51


Proper prerelease handling for install-powershell.sh and linux respositories

I updated the installer with a bug fix so that it would recognize preview releases and now it takes them by default.
I noticed that yum update now takes subsequent preview releases - but I'm uncertain whether that is because I already took a preview or if the yum repository is serving up the latest regardless of preview status.
As a consumer of both the installer-powershell.sh script and the Microsoft Linux repositories, I think opting into previews should be under the control of the installer and default to stable only.
I can foresee how that would mean a special switch on install-powershell.sh should be necessary, but I don't know if the repository is setup properly to serve only stable by default?

/cc @TravisEz13 @SteveL-MSFT

The linux package should be renamed to powershell-preview for non-stable releases so people can choose if they want stable or preview.

The issue is it shouldn't even be the same package in the first place.  You should have to opt-in to getting the preview releases.

install-powershell.sh is not a package - it is a method for installing packages.  So I'm advocating that like package managers the script adopt the same approach of a switch which controls opt-in to prereleases.
I'm also trying to express that splitting into two scripts does not lessen development as the same logic to avoid or consume prerelease tagged packages must be built and used in both for anything that is not repo based.
So there does not seem to be speed of development nor simplicity benefits to splitting into two scripts.

I have a follow up question - should prereleases be publish here - this is why the script finds them at all: https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/metadata.json
Should this be in a separate file for prereleases?

It looks like the releases are not being properly tagged - so it will also be up to parsing to determine prerelease status:

I wonder too why we don't set the check box.

It looks like it can be change retroactively. I'll defer the actual change to @TravisEz13 or @daxian-dbw as I'm not sure if changing it would break anything.

@daxian-dbw  told me not to tag any release as pre-release.  I'm not sure why.

distro
problem
implementation

debian
package
package Mgr

redhat
package
package Mgr

susue
script
tar gz

macos
working
brew

amazonlinux
script
tar gz

The problem is actually with our package where the script is using the inbox package manage. The issue is only in your script for two of the distros.  I would suggest just hard coding the latest stable version in those two scripts.  We should fix the package manager issues.

Can anyone help with the statement so I can get one list of preview releases and one of product (based on presence or lack of "-" or characters) ?
I'm not sure how just regular sorting will work of those two lists - but I could work that part out.

Looking for feedback on this code.  Only tested on CentOS.
FYI - I'm not trying to create a universal bash github version enumerator - so it may contain some assumptions - for instance that all prerelease identifiers sort with the most recent last in the case an overlapping version number is used between prereleases.
echo "All Versions"
curl https://api.github.com/repos/PowerShell/PowerShell/releases | grep -Po '"tag_name":(\d*?,|.*?[^\\]",)' | grep -Po '\d.\d[\da-z.-]*'

lastprodrelease=$(curl https://api.github.com/repos/PowerShell/PowerShell/releases | grep -Po '"tag_name":(\d*?,|.*?[^\\]",)' | grep -Po '\d.\d.\d[\da-z.-]*' | grep -v '[a-z]' | sort | tail -n1)

echo "Latest Regular Version: $lastprodrelease"

lastprerelease=$(curl https://api.github.com/repos/PowerShell/PowerShell/releases | grep -Po '"tag_name":(\d*?,|.*?[^\\]",)' | grep -Po '\d.\d.\d[\da-z.-]*' | grep '[a-z]' | sort | tail -n1)

echo "Latest Prerelease Version: $lastprerelease"

#6405 seems to track the same thing.


Alternate parameters

Often I need to put an item to a specific list but don't need to put a label or due date.  It would be nice to do card;description;list - but it always goes to the first list on the board.

+1 I tried the example you give "trello Do work!; seriously, do work; red; 09/01/2015; Inbox". It always goes to the first list on the board.

+1 for the ablility to add to a specific list

This works for me, guys. Make sure you don't have spaces after the ;. You can also skip arguments you don't want:
trello Do work!;seriously;red,green;;Inbox (adds to Inbox with red and green labels with no due date)
trello Have fun;;;2015-07-11 (adds to the first list with no description, no labels, and a due date

Ahh, thanks @sarumont.


Fleetmanager rbac

What type of PR is this?
/kind feature
What this PR does / why we need it:
Add update deployment in rbac.yaml

/lgtm


Odd behavior in watch mode between "Enter" and "save" with React

🐛 Bug Report

To Reproduce
Steps to reproduce the behavior:
git clone https://github.com/kentcdodds/jest-save-enter
cd jest-save-enter
npm install
npm run test

Then open the example.test.js and save it a few times until you notice the issue. The test passes, but every now and then, we'll get a console.error from React.
Here's the code in the example.test.js file:
const React = require('react')
const ReactDOM = require('react-dom')
const {act} = require('react-dom/test-utils')

function Comp() {
  const [state, setState] = React.useState()
  React.useEffect(() => {
    setTimeout(() => {
      console.log('updating state')
      setState('blah')
    })
  }, [state])
  return null
}

test('example', async () => {
  const container = document.createElement('div')

  // using `act` is required to get effect callbacks run when rendering components
  // (React Testing Library does this automatically)
  act(() => {
    ReactDOM.render(React.createElement(Comp), container)
  })

  // the `cleanup` function from React Testing Library (which also happens automatically)
  // flushes all the in-flight effects by waiting for the next tick of the event loop
  // this is basically a simplified version of: https://github.com/facebook/react/blob/master/packages/shared/enqueueTask.js
  await new Promise((resolve) => setImmediate(resolve))

  // this is the last thing that happens in cleanup (to avoid memory leaks)
  ReactDOM.unmountComponentAtNode(container)
}

And here's some output:
When it works

Without changing anything, sometimes this happens

Expected behavior
I expect the output to be consistent.
Link to repl or repo (highly encouraged)
https://github.com/kentcdodds/jest-save-enter
This issue is best explained in video form (5 minutes): https://youtu.be/hRxf6QUwkow
envinfo
  System:
    OS: macOS 10.15.4
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
  Binaries:
    Node: 12.13.1 - ~/n/bin/node
    Yarn: 1.21.1 - ~/.yarn/bin/yarn
    npm: 6.14.5 - /usr/local/bin/npm
  npmPackages:
    jest: ^26.0.1 => 26.0.1

I honestly have no idea what's going on here, but I definitely observe this happening sometimes in less contrived examples.
Related issues:

https://github.com/tannerlinsley/react-query/issues/432
https://github.com/testing-library/react-testing-library/pull/632

Looks like it may have to do with the setTimeout, I was able to modify the test to seemingly remove the randomness from it-- no idea if this is the best solution, but it's worked for me so far! haha https://github.com/kentcdodds/jest-save-enter/pull/1

Thanks, but changing the test is irrelevant. The fact jest is inconsistent with this is the bug in jest.

a


Show warning that tx's fee is higher than usual on Dapps price confirmation dialog

Show warning on dapps confirmation popups with text "The fee is higher than usual." https://zpl.io/bAKB4zq

@gingervik our suggestion is something like 5x greater than the average for the last 5 days. This is an open discussion, however. What do you think?


ReadItemAsync returns 401 exception when there is whitespace at the end of the ID field

Describe the bug
I was writing a simple piece of code to do a point read with ReadItemAsync. I accidently left some trailing whitespace in the parameter for the ID and got a 401 error with an exception like this:
 Caught Exception: Response status code does not indicate success: Unauthorized (401); Substatus: 0; ActivityId: 3fa0d278-2b79-4b10-aa83-128008ff7293; Reason: (The input authorization token can't serve the request. The wrong key is being used or the expected payload is not built as per the protocol. For more info: https://aka.ms/cosmosdb-tsg-unauthorized. Server used the following payload to sign: 'get
docs

This was confusing as I'd expect a 404 error as you normally get if you try and retrieve an item which isn't there.
To Reproduce
Just add whitespace to the end of the ID parameter field:
            // Read existing item from container
            Family readItem = await this.container.ReadItemAsync<Family>
            (
                id: "12345 ",
                partitionKey: new PartitionKey("Andersen")
            );

Expected behavior
I'd expect a 404 error as you would get with a regular mistake with the ID field.
Actual behavior
Application throws a 401 exception.
Environment summary
SDK Version: 3.31.0
OS Version: Windows 10

Closing due to inactivity and based on the fact that the result is expected on the combination of Connection Mode and type of payload.


Add UCMA University

Official Website URL: https://ucma.edu.mx/
The Page for their IT school is https://ucma.edu.mx/sistemas-computacionales/

@mariagomezleon First stage of verification passed, official domain is ucma.edu.mx as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

Thank you very much, the software is incredible and it would help a lot to learn more than what is currently used, I am waiting for approval. I wish you a good day.

@mariagomezleon Pull request merged. Thank you.


update readme and changelog

Add information about recent changes in changelog

Please, change PR title and commit messages (README is still mentioned).

Please, change PR title and commit messages (README is still mentioned).

No, it affected only PR title, commit message was already fixed.
Fixed PR title.


Link documentation from multi-actions screen

Description
Link documentation from multi-actions page
Make the advanced settings action drawer for action name a bit larger
Risk
N/A
Deploy Plan

deploy front

PMRR


Dark Mode

Dark mode can be appealing to eyes as light attracts bugs.

🤣 Thanks this would be really helpful.


[EXTERNAL] Opening an .ipynb doesn't always set the notebook controller.

When a .ipynb notebook is opened that looks like our extension can handle, we tell VS Code to switch to our controller (executor/kernel) but in the latest insiders builds, that only prompts the user and doesn't necessarily do the actual selection.
Consider the following scenario with attached video:
https://user-images.githubusercontent.com/926281/116483633-4d1a3780-a83c-11eb-806c-8b36db520b1f.mp4
Scenario: I've been working with Python notebooks, but then open one of my .NET Interactive notebooks.  The following is what happens with timestamps:

0:02 - The .NET Interactive extension sees that this is one of ours and tells VS Code to set us as the controller (executor); UI is displayed confirming this, but the user doesn't notice or accidentally dismisses it.
0:04 - The Python executor is still selected from my last notebook session.
0:10 - The cell's language looks like it's fine.
0:14 - And sometimes I even get C# hover text.
0:17 - But when I click execute, Python starts to spin up.
0:20 - And I get errors that my code is invalid.

@brettfo can you confirm if this is what you are still seeing?


[dx11] buffer image copies and more pipeline things

Adds buffer to (2d) image copies and (very) basic version descriptor sets. Also adds more pipeline things like index buffer binding, depth stencil creation, binding & clearing. Also removes old files in the backend directory.
Made a small example on the side to test everything so far with the backend (vertex/index buffer uploads, image copies, pipeline binding, buffer updates etc.):

Fixes #issue
PR checklist:

[ ] make succeeds (on *nix)
[ ] make reftests succeeds
[ ] tested examples with the following backends:

+1,625 −3,186
what happened with the 1.5k LOC ?

Moved Device struct and impl into device.rs

Just remembered, this PR is blocked by https://github.com/retep998/winapi-rs/pull/618 (next winapi release which is soon). I'll update the PR when it's out.

winapi 0.3.5 is published so this PR is no longer blocked on that.

Time to ship!
bors r+


The useTexture function throws an error on Android: "Cannot read property 'getCanvas' of null" .

Description
I am endeavoring to refactor a component that requires rendering hundreds of SVGs using Atlas, yet I have encountered this issue on Android.
Atlas has greatly enhanced the rendering speed on my iPad. I am grateful to the developers.
Version
"@shopify/react-native-skia": "^0.1.240",
"react-native-gesture-handler": "^2.14.0",
Android11
MIUI 12.5.3

Version
0.1.240
Steps to reproduce
The following code triggers an error on Android when the switch button is clicked, but runs smoothly on iPad 2021.
I removed the useTexture and changed texture to image2, after which the code ran without any issues.
import { Skia, drawAsImage, Group, Rect, Canvas, Atlas, rect, useTexture, useRSXformBuffer, useImage } from "@shopify/react-native-skia";
import { useSharedValue, useDerivedValue } from "react-native-reanimated";
import { GestureDetector, Gesture, GestureHandlerRootView } from "react-native-gesture-handler";
import { Button, View } from "react-native";
import { Fragment, useState } from "react";

const size = { width: 25, height: 11.25 };
const strokeWidth = 2;
const textureSize = {
    width: size.width + strokeWidth,
    height: size.height + strokeWidth,
};

export const Demo = () => {
    const pos = useSharedValue({ x: 0, y: 0 });
    const texture = useTexture(
        <Group>
            <Rect
                rect={rect(strokeWidth / 2, strokeWidth / 2, size.width, size.height)}
                color="cyan"
            />
            <Rect
                rect={rect(strokeWidth / 2, strokeWidth / 2, size.width, size.height)}
                color="blue"
                style="stroke"
                strokeWidth={strokeWidth}
            />
        </Group>,
        textureSize
    );
    const image2 = useImage("https://picsum.photos/200/300");

    const gesture = Gesture.Pan().onChange((e) => (pos.value = e));
    const numberOfBoxes = 150;
    const width = 256;
    const sprites = new Array(numberOfBoxes)
        .fill(0)
        .map(() => rect(0, 0, textureSize.width, textureSize.height));

    const transforms = useRSXformBuffer(numberOfBoxes, (val, i) => {
        "worklet";
        const tx = 5 + ((i * size.width) % width);
        const ty = 25 + Math.floor(i / (width / size.width)) * size.width;
        const r = Math.atan2(pos.value.y - ty, pos.value.x - tx);
        val.set(Math.cos(r), Math.sin(r), tx, ty);
    });

    const [showed, setShowed] = useState(true);

    return (
        <View style={{ flex: 1 }}>
            <GestureHandlerRootView style={{ flex: 1 }}>
                <GestureDetector gesture={gesture}>
                    {showed ?
                        (
                            <Canvas style={{ flex: 1 }}>
                                <Atlas image={texture} sprites={sprites} transforms={transforms} />
                            </Canvas>
                        )
                        :
                        (
                            <View/>
                        )
                    }
                </GestureDetector>
            </GestureHandlerRootView>
            <Button
                title="Switch"
                onPress={() => {
                    setShowed(!showed);
                }}
            />
        </View>
    );
};

Snack, code example, screenshot, or link to a repository
Uncaught Error
Cannot read property 'getCanvas' of null
size.height * pd）！;
> const canvas = surface.getCanvas();
canvas.scale(pd, pd);
canvas.drawPicture(picture);
surface.flush();

Offscreen.tsx (32:36)
Call Stack
anonymous
Offscreen.tsx:32:36
anonymous
textures.tsx:25:42
anonymous
threads.ts:123:23
anonymous
threads.ts:122:27
callGuardDEV
initializers.ts:23:8
Showing all frames

Could it be that the Android device doesn't have a GPU? This looks interesing.

Could it be that the Android device doesn't have a GPU? This looks interesing.

Thank you for your prompt response, but this Android device surely has a GPU as it is capable of running games with high graphical demands.

Sorry for the inconvenience, I have retested and found that the reproduction of this issue is random, but the frequency is quite high.The following is a screen recording.
https://github.com/Shopify/react-native-skia/assets/63859776/decab690-6e86-4126-96f5-dbc3d130434d
I replicated the process on the following Android device.

Android emulator Nexus 6 API 33
Android emulator Pixel 7 API 34
Physical device MIUI 12.3.5 Android 11

The following is the temporary code repository used for reproduction.
https://github.com/tsogzark/atlas_bug

Thanks for the nice reproducible example, I am looking into it now.

If you are writing the following:

const drawing = (
  <Group>
    <Rect
      rect={rect(strokeWidth / 2, strokeWidth / 2, size.width, size.height)}
      color="cyan"
    />
    <Rect
      rect={rect(strokeWidth / 2, strokeWidth / 2, size.width, size.height)}
      color="blue"
      style="stroke"
      strokeWidth={strokeWidth}
    />
  </Group>
);

const Demo = () => {
  const pos = useSharedValue({ x: 0, y: 0 });
  const texture = useTexture(drawing, textureSize);

you are guarantee not to crash but still I am investigating why it crashes.


Appveyor: fix install.ps1

out of curiousity, why was this broken?

the + doesn't actually concatenate strings in powershell.


Error waiting for a debug connection: The log reader stopped unexpectedly. Error launching application on V2153

Steps to reproduce
When i try to usb debugging with VIVO V2153, it showing the error. but if i gone with emulator everything is fine.
OS - funtouch OS 13 Global
Expected results
Need to solve the issue
Actual results
Launching lib\main.dart on V2153 in debug mode...
Parameter format not correct -
Running Gradle task 'assembleDebug'...                              4.3s
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Error waiting for a debug connection: The log reader stopped unexpectedly
Error launching application on V2153.
Code sample
Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[Paste your output here]

Closing this as a duplicate of https://github.com/flutter/flutter/issues/106086


Probabl fixes headless

not sure why it wasn't passsing thorugh before, but does now seem too

Yes, and a pip version bump needed.
I think this can be simplified if you don't have start_headless take the camel-case other core arguments, and don't have it return the core. Then just make sure the core and bridge get garbage collected at the end of start headless. Some combination of del core or core.__del__() or system.gc()--maybe you know how to do this better than I. This will have the effect that when you then create a new core, it will create a new bridge which can do the camel case independently (then you also woulnd't need both versions in start_headless)


[Bug] AttributeError: module 'tensorflow.python.framework.ops' has no attribute 'RegisterShape'

Installed using Conda
Run as Administrator
Got AttributeError: module 'tensorflow.python.framework.ops' has no attribute 'RegisterShape' error
When i tried to >python -m spleeter separate -i Test.mp3 -o output

Output
AttributeError: module 'tensorflow.python.framework.ops' has no attribute 'RegisterShape'
Environment

OS
Windows

Installation type
Conda /

RAM available
8

Hardware spec
CPU

hi @foxlet7
We've just recently moved to Tensorflow2. I don't know exactly what your issue was about but I hope it's now fixed in the latest spleeter version


Modifications for CRAFT, SwinIR, and DCTLAS are not detectable

Hey musl. I finally found some time to make spandrel compatible with your modified architectures, and it's not looking good. ATD was easy to detect and support because of the no_norm trick, but the others are hopeless. The state dicts for CRAFT and SwinIR are the same whether flash attention is used or not, and the dropout you added to DCTLAS also can't be detected.
This unfortunately means that the pth files of all CRAFT and SwinIR models trained with flash attention are essentially useless. The issue is that spandrel will see them as regular CRAFT and SwinIR model and silently use the wrong inference code, which leads to decreased performance. So the models will work, but they will produce worse outputs. It's the worst kind of unsupported models.
I'm not sure whether the modifications to DCTLAS are a problem. You just added a nn.Dropout2d(p=0.5) here. I don't know much about these things, so I'm not sure whether this will even affect the inference result.
What to do now
Going forward, I think the best option would be to use the no_norm trick for flash attention in CRAFT and SwinIR. If we add a flash_attention tensor when flash attention is enabled, spandrel can detect this and then use the correct inference code.
About DCTLAS: I'm not sure whether we even need to do anything, so I would like to hear your thoughts on the matter. If the dropout does affect inference results, then we need to use the same trick again.

Related to #61 and https://github.com/chaiNNer-org/spandrel/issues/230

I see. On newer network were I can implement flash attention I'll see about adding the tensor to make detection easier.

models trained with flash attention are essentially useless

Well, not true. It's not useful in the chainner/spandrel context, but people can still use it inside neosr, using the test.py script.

About DCTLAS: I'm not sure whether we even need to do anything

I haven't tested, but technically as long as dropout is 0 at inference time, it shouldn't affect the results. All it does is drop some channels during training, it's a common technique to increase generalization, but it shouldn't affect inference if it is set to 0.

On newer network were I can implement flash attention I'll see about adding the tensor to make detection easier.

Thanks musl!

It's not useful in the chainner/spandrel context, but people can still use it inside neosr, with the test.py script.

Yes, but that's not the whole picture. These models can only be used by neosr. Any program/library that implements the official arch code cannot use them (correctly). So I meant to say that they are not fit for general use.

I haven't tested, but technically as long as dropout is 0 at inference time, it shouldn't affect the results. All it does is drop some channels during training, it's a common technique to increase generalization, but it shouldn't affect inference if it is set to 0.

Thanks for the info! I just looked at how nn.Dropout2d is implemented, and it's a noop/identity function during evaluation. So neosr DCTLAS models are perfectly compatible with official arch code.

I just looked at how nn.Dropout2d is implemented, and it's a noop/identity function during evaluation. So neosr DCTLAS models are perfectly compatible with official arch code.

Nice! Thanks for looking into it.

Please reopen this issue @muslll. There is still no way to detect whether CRAFT and SwinIR use flash attention.

I'll fix CRAFT soon. As for SwinIR, I'll just leave it as it is, as it was more like an experiment to test flash attention.

I'll fix CRAFT soon.

👍 Thanks!

As for SwinIR, I'll just leave it as it is, as it was more like an experiment to test flash attention.

Then I would suggest removing the commented-out options for flash attention in the configs of SwinIR (1, 2, 3). If the feature is experimental, then this option (even if disabled) shouldn't be included in user-facing configs IMO.

Any updates on this?

Hi, not yet. Soon


Added quick sort algorithm C

Added quick sort algorithm in C language.
issue no. #129

there is already a pr for this issue


cg.get_engine_sampler gate_set_name should be made optional

As far as I can tell, Engine.get_sampler's gate_set argument is now optional. As such, cg.get_engine_sampler should not require a gate_set_name.
Also: we don't have a CZ gate in gatesets.NAMED_GATESETS or GOOGLE_GATESETS

We could deprecate cg.get_engine_sampler entirely, since this is equivalent to cg.get_engine(...).get_processor(...).get_sampler(). But I agree if we keep it around we should make the gate set arg optional, as it is on EngineProcessor.get_sampler.

This has been done


factor out image serving

Abstract out the impl of serving images which will allow us to inject different types of server (useful for mocking in test if nothing else).
@simon3z  @enoodle
I did notice the content url has / on it so you have to curl http://<IP_ADDRESS>:8080/api/v1/content/ vs http://<IP_ADDRESS>:8080/api/v1/content to get the content.  If you curl just http://<IP_ADDRESS>:8080/api/v1/content you'll get Permanently Moved.
Testing:
[pweil@localhost openshift-docs]$ curl <IP_ADDRESS>:8080/healthz
ok
[pweil@localhost openshift-docs]$ curl <IP_ADDRESS>:8080/api
{
  "versions": [
    "v1"
  ]
}
[pweil@localhost openshift-docs]$ curl <IP_ADDRESS>:8080/api/v1/metadata
{
  "Id": "sha256:8b5cf972e254795d1eef4f66e1a71d3c6869bbf4773d9fb36fd8c13ead1a9d5d",
  "Created": "2016-02-18T16:47:39.452282864Z",
  "Container": "f8fb8c4a27ffec2f7fa19595696c7c42754cf6a80b309d56f014090a5f4bc54a",
  "ContainerConfig": {
    "Hostname": "f8fb8c4a27ff",
    "Cmd": [
      "/bin/sh",
      "-c",
      "#(nop) ADD file:b472211c9fa1cd451ea7e94eee2ef1cdaae0413110f560bce5cb183a795b47d7 in /"
    ],
    "Image": "b0082ba983ef3569aad347f923a9cec8ea764c239179081a1e2c47709788dc44",
    "Entrypoint": null
  },
  "DockerVersion": "1.9.1",
  "Author": "Adam Miller<EMAIL_ADDRESS>  "Config": {
    "Hostname": "f8fb8c4a27ff",
    "Cmd": null,
    "Image": "b0082ba983ef3569aad347f923a9cec8ea764c239179081a1e2c47709788dc44",
    "Entrypoint": null
  },
  "Architecture": "amd64",
  "Size": 188718134,
  "VirtualSize": 188718134
}
[pweil@localhost openshift-docs]$ curl <IP_ADDRESS>:8080/api/v1/content/
curl: (18) transfer closed with<PHONE_NUMBER>854775807 bytes remaining to read

@pweil- I need to queue this behind #3

no worries, I'll rebase as necessary

@pweil- @simon3z we should have this on openshift/image-inspector. it would help alot there, especially with the new commits we need better structure.

@enoodle please do


Inheritance Diagram is Broken

See:
https://aedtdocs.pyansys.com/API/Application.html#inheritance-diagram

It is now back to normal. I had to install graphviz on all agents.


typescript: handle constraints/bounds in generics

E.g. f, we should examine Foo.  See test.

cc @ayazhafiz  (random CL)

PTAL, ready for submit

@kythe plz merge